我尝试使用列通过datagridview搜索值,我有应用装置类型和应用装置名称列,多个应用装置可以具有相同的应用装置,用户将使用应用装置类型列进行搜索
我想要的是,当用户搜索应用装置类型时,具有搜索到的应用装置类型的所有行都应该像某种排序一样出现在顶部
下面是我已经尝试过,但它只带来一行
先谢了
private DataGridViewCell gettext(string searchtext,DataGridView dataGridView,int index)
{
dtgridappliance.MultiSelect = true;
dtgridappliance.SelectionMode=DataGridViewSelectionMode.FullRowSelect;
DataGridViewCell met = null;
foreach(DataGridViewRow row in dataGridView.Rows)
{
for (int i = 0; i < row.Cells.Count; i++)
{
if (row.Cells[index].Value != null && row.Cells[index].Value.ToString().ToLower().Contains(searchtext.ToLower()))
{
met = row.Cells[index];
dtgridappliance.Rows[index].Selected = true;
this.dtgridappliance.Sort(dtgridappliance.Columns[0],ListSortDirection.Ascending);
dtgridappliance.FirstDisplayedScrollingRowIndex = dtgridappliance.SelectedRows[i].Index;
break;
}
}
}
return met;
}
1条答案
按热度按时间uoifb46i1#
您的问题是如何在datagridview中将包含搜索结果的行置于顶部,而您当前的方法是尝试使用DataGridView.Sort直接使用UI控件。
如果您愿意用另一种方法来实现这一点,那么对于
DataGridView
,通过设置DataSource
属性(在本例中为BindingList<Appliance>
)并使用该列表通常更容易实现您想要的结果。对于初学者来说,DGV可以完全设置使用主窗体的
OnLoad
中的~10行。其中表示一行数据的类如下所示:
排序需要一种方法来比较给定的
Appliance
和组合框中选择的类型:现在,当组合框更改时,您可以移除所有DataGridView项,然后以不同的顺序放回。
这“只是一种方法”,但我tested它和它的工作。希望这有助于让您更接近您的预期结果。