获取网格视图以在 C# 中选择行时遇到问题
本文关键字:选择 遇到 问题 网格 视图 获取 | 更新日期: 2023-09-27 17:56:25
我已经研究这个问题几天了。
背景:我设置了一个购物车,它存储在会话中。我正在将其从会话中拉出并将其绑定到网格视图。我希望用户能够更改项目的数量。我遇到了几个问题,而这个问题只是没有解决。
我在每行都有一个命令名称为"选择"的按钮。当您单击该按钮时,它会弹出一个带有文本框的模式弹出窗口。
但是,当我单击该按钮时,SelectedValue 为 -1,并且会引发超出范围异常。
它应该是项的产品 ID。数据密钥名称是产品 ID,当我在网格视图中显示产品 ID 时,它显示为正确的非 -1 ID。
protected void btnChange_Click(object sender, EventArgs e)
{
Dictionary<int, ShoppingCartItem> cart = (Dictionary<int, ShoppingCartItem>)Session["Cart"];
cart[(int)gvCart0.SelectedValue].Quantity = int.Parse(tbQuantity.Text);
gvCart0.DataBind();
}
注意::p lease 将按钮的CommandName
更改为"selectCart"
设置按钮的命令参数属性:
。.aspx
CommandArgument='<%#((GridViewRow)Container).RowIndex%>'
。.cs
protected void gvCart0_RowCommand(object sender, GridViewCommandEventArgs e)
{
try
{
int index = Convert.ToInt32(e.CommandArgument);
if (e.CommandName == "selectCart")
{
Dictionary<int, ShoppingCartItem> cart = (Dictionary<int, ShoppingCartItem>)Session["Cart"];
cart[index].Quantity = int.Parse(tbQuantity.Text);
}
gvCart0.DataBind();
}
catch (Exception ee)
{
string message = ee.Message;
}
}
对于 RowEdit,您必须在 RowEditing 事件上执行类似操作才能设置 EditIndex,
protected void grid_RowEditing(object sender, GridViewEditEventArgs e)
{
grid.EditIndex = e.NewEditIndex;
}
您可能需要对 OnSelectedIndexChanging 事件执行相同的操作。
首先,
在 ItemCommand 上获取 ProductId 并将其存储在视图状态中,然后在 ButtonClick 事件上通过从视图状态获取 ProductId 来执行您想要执行的相应操作,并且不要忘记在修改集合时将数据源设置为网格视图。