【问题标题】:Problems with reading value of DropDownList from GridView从 GridView 读取 DropDownList 值的问题
【发布时间】: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


【解决方案1】:

您需要使用if(!IsPostBack) 将代码包装在Page_Load 事件中,以确保保留所选值。

【讨论】:

    猜你喜欢
    • 2011-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-30
    • 2014-04-04
    • 1970-01-01
    • 1970-01-01
    • 2018-12-31
    相关资源
    最近更新 更多