我在ascx第3页GridViews中创建,如:
<dxwgv:ASPxGridView ID="grid1" ..... >
<dxwgv:ASPxGridView ID="grid2" .... >
<dxwgv:ASPXGridView ID="grid3" ....>
</dxwgv>
</dxwgv>
</dxwgv>
但在代码隐藏中,我只看到第一个网格(grid1)ID并且只能控制它。如何使用他人?
答案 0 :(得分:0)
您将看不到其他网格视图,因为它们隐藏在第一个网格视图中,要访问您应执行以下操作的其他网格视图:
grid2.RowDataBound += new EventHandler(GVsubone.RowDataBound);
P.S。你可以处理任何事件RowDataBound就是一个例子。
答案 1 :(得分:0)
我认为
GridView grid2 = (GridView)grid1.FindControl("grid2")
GridView grid3 = (GridView)grid2.FindControl("grid3")
应该有用。
答案 2 :(得分:0)
更好的解决方案是在运行时为控件分配唯一ID(和ClientInstanceNames)以及脚本。 以下知识库文章中描述了此方法:The general technique of using the Init/Load event handler.
然后另一种方法是处理详细信息网格的ASPxGridView.DataBound事件,并通过sender参数获取对网格的引用。如果您使用主要详细信息,则可以在此处调用主网格的ASPxGridView.FindDetailRowTemplateContro l方法。
如果您使用的是GridView的DataRowTemplate,请使用 ASPxGridView.FindRowTemplateControl Method,你只需要得到 行的visibleIndex,你可以访问网格 它的名字。
如果您使用的是Coloumn模板,请使用ASPxGridView.FindRowCellTemplateControl Method
protected void ASPxGridView1_HtmlDataCellPrepared(object sender, ASPxGridViewTableDataCellEventArgs e) {
if(e.DataColumn.FieldName == "title") {
ASPxTextBox textBox = ASPxGridView1.FindRowCellTemplateControl(e.VisibleIndex, e.DataColumn, "ASPxTextBox1") as ASPxTextBox;
textBox.Text = Convert.ToString(e.CellValue);
}
}
参考这些:
ASPxGridView - How to access controls inside DetailRow on the client side