我正在开发一个Winform应用程序,其中包含一个Devexpress GridView,其组成如下:
Location
和Hotel Name
列分组)我在输入中有这些数据:Location Name
,Hotel name
。
当我打开表单时,我需要展开位置和酒店名称的相应组,并打开详细视图以及该酒店的可用性。
在附件中,您可以找到网格的屏幕截图,并根据需要展开行。
你能帮帮我吗?
我尝试的代码如下,但它只打开位置组,而不是酒店名称及其详细信息。
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;
}
截图:
答案 0 :(得分:0)
我建议您浏览Process Group Rows
的文档您可以使用以下方法查看是否为组行:
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);
<强>参考文献:强>
How to select only group rows in XtraGrid with multi-select mode?
Group rows in a gridview
Selecting row in a grouped grid