![](/img/trans.png)
[英]How to access a selected Boundfield value from a GridView in code-behind
[英]Access GridView inside another GridView from code-behind
我在ascx頁面3 GridViews中創建,如下所示:
<dxwgv:ASPxGridView ID="grid1" ..... >
<dxwgv:ASPxGridView ID="grid2" .... >
<dxwgv:ASPXGridView ID="grid3" ....>
</dxwgv>
</dxwgv>
</dxwgv>
但是在后面的代碼中,我僅看到第一個網格(grid1)ID,並且只能對其進行控制。 如何使用別人?
您將看不到其他網格視圖,因為它們被隱藏在第一個網格視圖中,要訪問其他網格視圖,您應該執行以下操作:
grid2.RowDataBound += new EventHandler(GVsubone.RowDataBound);
PS您可以處理任何事件RowDataBound就是一個例子。
我認為
GridView grid2 = (GridView)grid1.FindControl("grid2")
GridView grid3 = (GridView)grid2.FindControl("grid3")
應該管用。
更好的解決方案是在運行時為控件分配唯一的ID(和ClientInstanceNames)以及腳本。 以下知識庫文章中介紹了這種方法: 使用Init / Load事件處理程序的一般技術。
然后另一種方法是處理詳細信息網格的ASPxGridView.DataBound事件,並通過sender參數獲取對該網格的引用。 如果您正在使用“ 主詳細信息”,則可以在此處調用主網格的ASPxGridView.FindDetailRowTemplateContro方法。
如果您使用的是GridView的DataRowTemplate,然后使用ASPxGridView.FindRowTemplateControl方法 ,則只需獲取該行的visibleIndex,便可以使用其名稱訪問網格。
如果使用Coloumn模板,則使用ASPxGridView.FindRowCellTemplateControl方法
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);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.