簡體   English   中英

ASP.NET 如何通過單擊按鈕將數據添加到 gridview

[英]ASP.NET how to add to data to gridview from button click

我有一個嵌套的網格視圖。 在頂層網格上,我有一個按鈕,它應該調用一個存儲過程並將該數據放入嵌套的 gridview 中。

這是我的 ASPX 頁面代碼

<form id="form1" runat="server">
<asp:GridView ID="gvCustomers" runat="server" AutoGenerateColumns="false" CssClass="Grid"
    DataKeyNames="ID" OnRowDataBound="OnRowDataBound">
    <Columns>
        <asp:TemplateField>
            <ItemTemplate>
                <asp:Button Text="Expand" runat="server" OnClick="Select" CommandArgument='<%#Eval("ID") %>' />
                <asp:Panel ID="pnlOrders" runat="server" Style="display: none">
                    <asp:GridView ID="gvOrders" runat="server" AutoGenerateColumns="false" CssClass = "ChildGrid">
                        <Columns>
                            <asp:BoundField ItemStyle-Width="135px" DataField="Label" HeaderText="Label" />
                            <asp:BoundField ItemStyle-Width="150px" DataField="IDs" HeaderText="IDs" />

                            <asp:BoundField ItemStyle-Width="150px" DataFormatString="${0:###,###,###.00}" DataField="Total" HeaderText=Total" />
                        </Columns>
                    </asp:GridView>
                </asp:Panel>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:BoundField ItemStyle-Width="150px" DataField="Source" HeaderText="Source" />
        <asp:BoundField ItemStyle-Width="150px" DataField="Label" HeaderText="Label" />
        <asp:BoundField ItemStyle-Width="150px" DataFormatString="${0:###,###,###.00}" DataField="Total20" HeaderText="Total20" />
        <asp:BoundField ItemStyle-Width="150px" DataFormatString="${0:###,###,###.00}" DataField="Total1" HeaderText="Total1" />
        <asp:BoundField ItemStyle-Width="150px" DataFormatString="{0:P1}"  DataField="Average_Fee_PCT" HeaderText="Average Fee" />
    </Columns>
</asp:GridView>
</form>
        

這是我的 C# 代碼

protected void Select(object sender, EventArgs e)
{
    string ID = (sender as Button).CommandArgument;

            Response.Write("<script>console.log('ID...." + ID + "');</script>");
            
        GridView gvOrders = e.Row.FindControl("gvOrders") as GridView;          
        gvOrders.DataSource = GetData(string.Format("exec ReturnDataSingle '" + ID + "', '"+ DateTime.Now.ToString("yyyy-MM-dd") + "'"));
        gvOrders.DataBind();


}

這是我收到的錯誤消息

“System.EventArgs”不包含“Row”的定義,並且找不到接受“System.EventArgs”類型的第一個參數的擴展方法“Row”

有人可以幫我弄清楚如何根據該按鈕單擊將存儲過程數據添加到 gvOrders gridview 嗎?

嘗試將sender對象轉換為被點擊的按鈕,然后,獲取按鈕的NamingContainer並在行( GridViewRow )中查找 GridView 控件,接下來是加載數據:

protected void Select(object sender, EventArgs e)
{
    Button btn= (Button)sender;

    GridViewRow row = (GridViewRow)btn.NamingContainer;

    GridView GridChild = ((GridView)row.FindControl("gvOrders"));

    // Fill GridView
    GridChild.DataSource = GetData(string.Format("exec ReturnDataSingle '" + ID + "', '"+ DateTime.Now.ToString("yyyy-MM-dd") + "'"));
    GridChild.DataBind();
}

問題是Row屬性適用於GridViewRowEventArgs對象,通常在RowDataBound事件中處理,但您需要通過 Click 觸發該事件,因此您被迫使用EventArgs對象

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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