![](/img/trans.png)
[英]How to display data from one page to another in gridview on button click by using session on asp.net
[英]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.