首页 > 解决方案 > 下拉值总是选择第一个值

问题描述

下面是我的行更新事件代码。我的问题是当我选择下拉并将其保存到数据库时,它总是只选择第一个选择。

    protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {


                int devopsid = Convert.ToInt16(GridView1.DataKeys[e.RowIndex].Values["devopsid"].ToString());

                foreach (GridViewRow row in GridView1.Rows)
                {
                    if (row.RowType == DataControlRowType.DataRow)
                    {
                        for (int i = 5; i < row.Cells.Count; i++)
                    {
                            DropDownList ddl = new DropDownList();
                            ddl.ID = "ddl " + row.Cells[0].Text;
                            // ddl.SelectedIndex = 0;
                            // ddl.Items.Add("Yes");
                            //ddl.Items.Add("No");
                            // ddl.SelectedIndex = 0;
                            ListItem item1 = new ListItem("Yes", "1");
                            ListItem item2 = new ListItem("No", "0");

                            List<string> values = new List<string>() { "Yes", "No" };
                            ddl.DataSource = values;

                            ddl.DataBind();

                            row.Cells[i].Controls.Add(ddl);
                            string ddlselected = ddl.SelectedValue;
                            if (GridView1.HeaderRow.Cells[i].Text == DropDownList1.SelectedItem.Text.Trim())
                            {
                                string query = " update devopstable set  " + GridView1.HeaderRow.Cells[i].Text + "  = '" + ddlselected + "' where devopsid=@devopsid ";
                                SqlCommand cmd = new SqlCommand(query, cnn1);
                                cnn1.Open();
                                cmd.Parameters.AddWithValue("@devopsid", devopsid);
                                cmd.ExecuteNonQuery();
                                cnn1.Close();
                            }


                    }
                }
            }
                GridView1.EditIndex = -1;
                FillGrid();


        }

标签: c#asp.net

解决方案


尝试在 page_load 的 IsPostback 中编写保存方法

例子:

protected void Page_Load(object sender, EventArgs e)
{

  if (IsPostBack)
  {
      // wrap your save method in function and call here
  }

}

推荐阅读