检查aspxgridview Master-Detail是否在客户端检查了任何行

时间:2016-11-09 19:13:15

标签: javascript devexpress aspxgridview

我需要检查Master-Detail AspxGridView中是否检查了任何行。

使用主人我可以使用

grid.GetSelectedRowCount()>0

但是如何使用JS查看详细行?

提前致谢

1 个答案:

答案 0 :(得分:2)

要实现此目的,您需要为每个详细信息网格分配一个唯一的ClientInstanceName,然后使用分配的ClientInstanceName访问客户端上的特定详细信息网格,而ClientInstanceName又应包含主网格的行ID部分,即detailGrid_1对于第一行,detailGrid_2为第二行,依此类推。

要将ClientInstanceName分配给每个详细信息网格,您需要将自定义Page_Init处理程序添加到详细信息网格中,作为代码隐藏中该处理程序中的设置ClientInstanceName。

因此,网络定义可能如下所示:

<dx:ASPxGridView ID="masterGrid" runat="server" ClientInstanceName="masterGrid">
...
<Templates>
   <DetailRow>
      <dx:ASPxGridView ID="detailGrid" runat="server" OnInit="detailGrid_OnInit">
         ...
      </dx:ASPxGridView>
   </DetailRow>
</Templates>
...
</dx:ASPxGridView>

然后在codebehind:

protected void detailGrid_OnInit(object sender, EventArgs e) {
    ASPxGridView detailGridView = (ASPxGridView)sender;
    GridViewDetailRowTemplateContainer templateContainer =
                   (GridViewDetailRowTemplateContainer)detailGridView.NamingContainer;
    detailGridView.ClientInstanceName = string.Format("detailGrid_{0}",
                                             templateContainer.VisibleIndex);
}

然后在您的事件处理程序的客户端(您没有提到您尝试检查哪个事件检查是否有详细网格选择了某些行),您需要获取主网格的行ID和构造手动详细网格的客户端实例名称,例如:

eval('detailGrid_' + master_grids_row_id).

或者您可以将它以现成的形式传递给JS甚至处理程序,如下面的文章所示。

获得正确的detailGrid客户端实例名称后,可以调用以下JS方法:

detailGrid_XX.GetSelectedKeysOnPage();

有关一些代码示例,请参阅此DX支持文章:https://www.devexpress.com/Support/Center/Question/Details/Q450479

HTH