Как добавить данные в gridview с помощью кнопки click
У меня есть вложенный gridview. На сетке верхнего уровня у меня есть кнопка, которая должна вызвать хранимую процедуру и поместить эти данные во вложенный 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' does not contain a definition for 'Row' and no extension method 'Row' accepting a first argument of type 'System.EventArgs' could be found
Может ли кто-нибудь помочь мне выяснить, как я смогу добавить данные хранимой процедуры в gvOrders gridview на основе этого нажатия кнопки?
Что я уже пробовал:
Кажется, я не могу понять, как добавить эти данные в таблицу с помощью нажатия кнопки.
Richard Deeming
GetData(string.Format("exec ReturnDataSingle '" + ID + "', '"+ DateTime.Now.ToString("yyyy-MM-dd") + "'"))
Вы написали метод, который заставит вас написать код, уязвимый для SQL-инъекция[^]. НИКОГДА используйте конкатенацию строк / интерполяцию /
string.Format
чтобы построить SQL-запрос. ВСЕГДА используйте параметризованный запрос.Все, что вы хотели знать о SQL-инъекции (но боялись спросить) | Трой Хант[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? | Обмен Стеками Информационной Безопасности[^]
Шпаргалка по параметризации запросов | OWASP[^]