簡體   English   中英

訪問GridViewCommandEventArgs對象的非公共成員

[英]Access Non-Public members of a GridViewCommandEventArgs object

我在aspx頁面上有一個gridview,它使用一系列ASP.NET LinkBut​​ton對象來設置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.LinkBut​​ton'”

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM