gpt4 book ai didi

c# - 在 DataGrid 中的行之间导航

转载 作者:行者123 更新时间:2023-11-30 16:40:10 26 4
gpt4 key购买 nike

我已经创建了一个加载到 DataGrid 中的 sqlite 数据库,但是我有两个 Next 和 Previous 按钮,可以很容易地在数据之间导航并使用 将其显示到 Windows 窗体中的相应文本框DataGridView 但我找不到在 DataGrid 中执行相同操作的方法。

这是我的sql数据库代码-

string dbConnectionString = @"Data Source=emsdatabase.db;version=3;";

将数据加载到 DataGrid 中:

SQLiteConnection sqliteCon = new SQLiteConnection(dbConnectionString);
try
{
sqliteCon.Open();
string Query = "select Eid,Name,Mobile,Gender,Email from employeeinfo";
SQLiteCommand createCommand = new SQLiteCommand(Query, sqliteCon);
createCommand.ExecuteNonQuery();

SQLiteDataAdapter dataAdp = new SQLiteDataAdapter(createCommand);
DataTable dt = new DataTable("employeeinfo");
dataAdp.Fill(dt);
TableDataGrid.ItemsSource = dt.DefaultView;
dataAdp.Update(dt);

sqliteCon.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}

我可以在相应的文本框中显示选定的数据:

DataGrid gd = (DataGrid)sender;
DataRowView rowSelected = gd.SelectedItem as DataRowView;
if (rowSelected != null)
{
EidTextBox.Text = rowSelected["Eid"].ToString();
NameTextBox.Text = rowSelected["Name"].ToString();
MobileTextBox.Text = rowSelected["Mobile"].ToString();
GenderTextBox.Text = rowSelected["Gender"].ToString();
EmailTextBox.Text = rowSelected["Email"].ToString();
}

但无法在单击下一个或上一个按钮时在文本框上显示相应的数据

private void PrevButton_Click(object sender, RoutedEventArgs e)
{
//?????
}

private void NextButton_Click(object sender, RoutedEventArgs e)
{
//?????
}

最佳答案

诀窍是更改 SelectedIndex 或 SelectedItem。

private void PreviousClick(object sender, RoutedEventArgs e)
{
if (TableDataGrid.SelectedIndex > 0)
TableDataGrid.SelectedIndex--;
}

private void NextClick(object sender, RoutedEventArgs e)
{
if (TableDataGrid.SelectedIndex < TableDataGrid.Items.Count - 1)
TableDataGrid.SelectedIndex++;
}

我们可以在 DataView 中找到上一个和下一个 DataRowView(除非分别选择了第一行或最后一行)。如果可以导航,则更改 DataGrid.SelectedItem:

private void PreviousClick(object sender, RoutedEventArgs e)
{
DataRowView rowSelected = TableDataGrid.SelectedItem as DataRowView;
if (rowSelected == null)
return;
int idx = GetDataRowViewIndex(rowSelected);
if (idx > 0)
TableDataGrid.SelectedItem = rowSelected.DataView[idx - 1];
}

private void NextClick(object sender, RoutedEventArgs e)
{
DataRowView rowSelected = TableDataGrid.SelectedItem as DataRowView;
if (rowSelected == null)
return;
int idx = GetDataRowViewIndex(rowSelected);
if (idx < rowSelected.DataView.Count - 1)
TableDataGrid.SelectedItem = rowSelected.DataView[idx + 1];
}

int GetDataRowViewIndex(DataRowView row)
{
for (int i = 0; i < row.DataView.Count; i++)
if (row.DataView[i] == row)
return i;
return -1;
}

关于c# - 在 DataGrid 中的行之间导航,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51818170/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com