问题:我得到了一个gridview,它填充了来自数据库的产品数据。在该GridView中嵌套一个“ButtonField”(在最后一列),以便能够将整个行内容作为对象添加到List,如果用户单击ButtonField(加入购物车)。该按钮在“设计视图”使用时,双击我一直在......无法创建嵌套在gridview中的ButtonField事件处理程序
protected void gview_SelectedIndexChanged(object sender, EventArgs e)
{
//Response.Write("This WORKS!");
}
...而不是所生成按钮的正确的事件处理程序(我假设要寻找有点像这样)。
protected void gview_RowCommand(Object sender, GridViewCommandEventArgs e)
{
List<GridViewRow> gvrowobjlist = new List<GridViewRow>();
if (e.CommandName == "Add to cart")
{
GridViewRow gvrow = gview.SelectedRow;
gvrowobjlist.Add(gvrow);
//Response.Write("This WORKS as well!!!!!!");
}
}
因此这里的问题似乎是,它是不可能在一个元素(GridView控件),所以在创建上面的代码实际上是访问一个元素(绑定列)。在后台代码中手动执行此操作会导致非工作事件处理程序(尝试失败)。
问题:我在做什么错误,以及如何正确创建事件处理程序,因此可以将对象添加到列表中?问题可能与BoundFields与ButtonField的组合有关吗? PS。我已经在这里寻找可能的重复,但没有什么能够解决这个问题。
<asp:GridView ID="gview" runat="server" CellPadding="15" ForeColor="#333333" GridLines="None" AutoGenerateColumns="false" HorizontalAlign="Center" OnSelectedIndexChanged="gvVbResult_SelectedIndexChanged">
<AlternatingRowStyle BackColor="White" />
<Columns>
<asp:BoundField DataField="prodId" HeaderText="Product ID" >
<ItemStyle HorizontalAlign="Center" Width="160px"></ItemStyle>
</asp:BoundField>
<asp:BoundField DataField="prodName" HeaderText="Product Name" >
<ItemStyle HorizontalAlign="Left" Width="150px"></ItemStyle>
</asp:BoundField>
<asp:BoundField DataField="packNo" HeaderText="Package amount" >
<ItemStyle HorizontalAlign="Center" Width="100px"></ItemStyle>
</asp:BoundField>
<asp:BoundField DataField="bxCont" HeaderText="Box Content" >
<ItemStyle HorizontalAlign="Center" Width="100px"></ItemStyle>
</asp:BoundField>
<asp:BoundField DataField="price" HeaderText="Price" ItemStyle-Width="100" >
<ItemStyle Width="100px"></ItemStyle>
</asp:BoundField>
<asp:ButtonField Text="addToCart" ButtonType="Button" CommandName="Add to cart" />
</Columns>
</asp:GridView>
但是你不会为RowCommand事件唱歌,你为什么期望它的处理程序被触发? – Andrei
今天也许我有点迟缓,但我没有跟着你。请你详细说明一下吗?谢谢。 – themightyhulk
在你的代码片段中,你有'OnSelectedIndexChanged =“gvVbResult_SelectedIndexChanged”'这个事件处理程序。你没有相同的行命令 – Andrei