我是C#的新手。我正在尝试构建一个WPF应用程序,该应用程序将从Excel工作表中获取数据并插入到DataTable
中。
该窗口将具有多个带有搜索按钮的文本框。点击搜索按钮后,程序应在ID
列中搜索与TextBox
中的Text相等的值,然后返回所有相应的行值会显示在每个特定的不可编辑TextBox
中。
由于我不想在UI中使用实际的DataGrid
,所以我只创建了一个DataGrid
对象并加载了所有数据。在使用here中的以下代码之后:
for (int i = 0; i < dataGrid.Items.Count; i++)
{
DataGridRow row = (DataGridRow)dataGrid.ItemContainerGenerator.ContainerFromIndex(i);
TextBlock cellContent = dataGrid.Columns[0].GetCellContent(row) as TextBlock;
if (cellContent != null && cellContent.Text.Equals(textBox1.Text))
{
object item = dataGrid.Items[i];
dataGrid.SelectedItem = item;
dataGrid.ScrollIntoView(item);
row.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
break;
}
}
但是,除非我在XAML中添加DataGrid
并将其填满,否则以上代码将不起作用。我发现的大多数解决方案都要求我将其添加到XAML中。认为将其发布为新问题。请帮助我。
PS:我已经在VB.NET中构建了这个应用程序(不是那么困难),现在我想转到C#。
答案 0 :(得分:0)
假设您有一个名为DataTable
的{{1}}。这样只会在“ ID”列中搜索匹配项。
myData
或者您可以使用LINQ:
DataRow match = null;
foreach (DataRow row in myData.Rows)
{
object cell = row["ID"];
if (cell != null && cell.ToString() == textBox1.Text)
{
match = row;
break;
}
}
if (match != null)
{
//You have found a row that contains the search text
//Do whatever you want with it here
}
else
//No match found