[英]Access Non-Public members of a GridViewCommandEventArgs object
我在aspx頁面上有一個gridview,它使用一系列ASP.NET LinkButton對象來設置OnRowCommand事件,以使用CommandName屬性來處理邏輯。 我需要訪問GridViewRow.RowIndex以從選定的行中檢索值,並在調試應用程序時注意到它是GridViewCommandEventArgs對象的非公共成員
有沒有一種方法可以訪問此屬性,這是更好的實現?
這是我的源代碼:
aspx頁面:
<asp:GridView ID="MyGridView" runat="server" OnRowCommand="MyGirdView_OnRowCommand">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton
id="MyLinkButton"
runat="server"
CommandName="MyCommand"
/>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
背后的代碼
protected void MyGirdView_OnRowCommand(object sender, GridViewCommandEventArgs e)
{
//need to access row index here....
}
更新:
@brendan-在以下代碼行中出現以下編譯錯誤:
“無法將類型'System.Web.UI.WebControls.GridViewCommandEventArgs'轉換為'System.Web.UI.WebControls.LinkButton'”
LinkButton lb = (LinkButton) ((GridViewCommandEventArgs)e.CommandSource);
我稍微修改了代碼,以下解決方案起作用了:
LinkButton lb = e.CommandSource as LinkButton;
GridViewRow gvr = lb.Parent.Parent as GridViewRow;
int gvr = gvr.RowIndex;
這不是世界上最干凈的事情,但這是我過去所做的事情。 通常,我會全部寫成一行,但在這里將其分解,這樣更清楚。
LinkButton lb = (LinkButton) ((GridViewCommandEventArgs)e.CommandSource);
GridViewRow gr = (GridViewRow) lb.Parent.Parent;
var id = gr.RowIndex;
基本上,您可以得到按鈕,並從按鈕到單元格,從單元格到行向上移動鏈。
這是單行版本:
var id = ((GridViewRow)((LinkButton)((GridViewCommandEventArgs)e).CommandSource).Parent.Parent).RowIndex;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.