C# 按名称在Devexpress网格视图中打开组和详细信息
我正在开发一个Winform应用程序,其中包含一个Devexpress GridView,其组成如下:C# 按名称在Devexpress网格视图中打开组和详细信息,c#,.net,gridview,devexpress,C#,.net,Gridview,Devexpress,我正在开发一个Winform应用程序,其中包含一个Devexpress GridView,其组成如下: 酒店视图(按位置和酒店名称列分组) 可用性视图(是酒店网格的详细视图,包含所选酒店的可用性) 我输入了以下数据:位置名称,酒店名称 当我打开表单时,我需要展开位置和酒店名称的相应组,并打开该酒店可用性的详细视图 在附件中,您可以找到网格的屏幕截图,该行根据需要展开 你能帮我吗 我尝试过的代码如下,但它只打开位置组,而不打开酒店名称和详细信息 private void hotelAvaila
- 酒店视图(按
和位置
列分组)酒店名称
- 可用性视图(是酒店网格的详细视图,包含所选酒店的可用性)
位置名称
,酒店名称
当我打开表单时,我需要展开位置和酒店名称的相应组,并打开该酒店可用性的详细视图
在附件中,您可以找到网格的屏幕截图,该行根据需要展开
你能帮我吗
我尝试过的代码如下,但它只打开位置组,而不打开酒店名称和详细信息
private void hotelAvailabilityGridView_EndGrouping(object sender, EventArgs e)
{
FocusFirstRecordInGroupRow(_hotelName);
}
public void FocusFirstRecordInGroupRow(string textToFind)
{
int groupRow = FindGroupRow(_hotelName);
if (groupRow >= 0) return;
hotelGridView.ExpandGroupRow(groupRow);
hotelGridView.FocusedRowHandle = hotelGridView.GetChildRowHandle(groupRow, 0);
}
private int FindGroupRow(string textToFind)
{
int i = 1;
while (i != GridControl.InvalidRowHandle)
{
i--;
string value = hotelGridView.GetGroupRowValue(i, hotelGridView.Columns[0]).ToString();
if (value == textToFind)
{
RecursExpand(hotelGridView, i);
return i;
}
}
return 0;
}
截图:
我建议您仔细阅读 您可以使用以下查看方法检查它是否为分组行:
int rowHandle = view.FocusedRowHandle;
if(view.IsGroupRow(rowHandle)){}
之后,您可以设置它的展开状态:
bool expanded = View.GetRowExpanded(rowHandle);
View.SetRowExpanded(rowHandle, !expanded);
您可以按如下所示的值定位一行,您可以根据需要展开匹配的行并折叠其他行
using DevExpress.XtraGrid.Views.Grid;
//...
GridView View = gridView1;
int rowHandle = -1;
do {
rowHandle = View.LocateByValue(rowHandle+1, View.Columns["Is In Stock"], false);
View.MakeRowVisible(rowHandle, false);
} while(rowHandle != GridControl.InvalidRowHandle);
参考文献:您能找到组行的行句柄吗?