检查 aspxgridview Master-Detail 是否在客户端检查了任何行
Checking if a aspxgridview Master-Detail has any row checked in Client Side
我需要检查主从 AspxGridView 中是否选中了任何行。
有主我可以用
grid.GetSelectedRowCount()>0
但是我如何使用 JS 将其与详细信息行进行检查?
提前致谢
要实现这一点,您需要为每个详细信息网格分配一个唯一的 ClientInstanceName,然后使用分配的 ClientInstanceName 在客户端访问该特定的详细信息网格,这反过来应该包括主网格的行 ID 部分,即 detailGrid_1 第一行,detailGrid_2 第二行等等。
要将 ClientInstanceName 分配给每个详细信息网格,您需要将自定义 Page_Init 处理程序添加到详细信息网格,作为代码隐藏中该处理程序中的 set 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>
然后在代码隐藏中:
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 even 处理程序,就像下面的文章所建议的那样。
获得正确的 detailGrid 客户端实例名称后,您可以调用以下 JS 方法:
detailGrid_XX.GetSelectedKeysOnPage();
有关一些代码示例,请参阅这篇 DX 支持文章:https://www.devexpress.com/Support/Center/Question/Details/Q450479
HTH
我需要检查主从 AspxGridView 中是否选中了任何行。
有主我可以用
grid.GetSelectedRowCount()>0
但是我如何使用 JS 将其与详细信息行进行检查?
提前致谢
要实现这一点,您需要为每个详细信息网格分配一个唯一的 ClientInstanceName,然后使用分配的 ClientInstanceName 在客户端访问该特定的详细信息网格,这反过来应该包括主网格的行 ID 部分,即 detailGrid_1 第一行,detailGrid_2 第二行等等。
要将 ClientInstanceName 分配给每个详细信息网格,您需要将自定义 Page_Init 处理程序添加到详细信息网格,作为代码隐藏中该处理程序中的 set 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>
然后在代码隐藏中:
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 even 处理程序,就像下面的文章所建议的那样。
获得正确的 detailGrid 客户端实例名称后,您可以调用以下 JS 方法:
detailGrid_XX.GetSelectedKeysOnPage();
有关一些代码示例,请参阅这篇 DX 支持文章:https://www.devexpress.com/Support/Center/Question/Details/Q450479
HTH