【发布时间】:2011-12-21 13:25:18
【问题描述】:
我有一个 ASP.NET gridview 组件,它正在填充来自数据库的数据。我还在 gridview 中添加了一个模板字段,其中包含一个 DropDownList 组件。我还创建了一个单独的按钮(不是 gridview 字段)。单击此按钮时,程序将遍历所有 GridView 行并检查每一行的 DropDownList,当找到具有选定值而不是 0 的 DropDownList 时,它将该特定行的详细信息放入要发送到的会话中另一个页面。代码如下:
protected void CheckoutButton_Click(object sender, EventArgs e)
{
int n = 0;
foreach (GridViewRow row in GridView1.Rows)
{
if (((DropDownList)row.FindControl("DropDownList1")).SelectedItem.Value == "0")
{
}
else
{
n++;
Session["ProductList" + n] = row.Cells[0].Text;
Session["QuantityList" + n] = row.Cells[5].Text;
Session["NumberofResults" + n] = n;
}
}
}
我遇到的问题是,当单击“结帐”按钮时,从 DropDownList 读取的值不是用户选择的值,而是其默认值。基本上,在 CheckoutButton_Click 方法中的代码执行之前,下拉列表的值被改回默认值。
有什么想法吗?
【问题讨论】:
-
您的代码是否在 Page_Load 事件中绑定了网格?听起来网格在 PostBack 上重新绑定。
-
是的,我在 Page_Load 事件中将数据库中的数据绑定到 gridview。那有什么建议吗?谢谢!
-
能否发布您的 Page_Load 事件的代码示例,谢谢。
-
我将代码包含在 if(!IsPostBack) 语句中的 Page_Load 事件中,它可以工作。非常感谢你的帮助! :)
-
太棒了! :) 为了完整起见,我在下面添加了答案,以便可以将其标记为其他 SO 用户的答案。
标签: asp.net gridview drop-down-menu