无法获取下拉选择的值

本文关键字:选择 获取 | 更新日期: 2023-09-27 17:53:56

我有一个gridview,每一行都有一个下拉列表。DDL用1中的一个数字填充——表示有多少行。

我有一个保存按钮保存每个DDL的值为每一行使用一个简单的循环,但问题是,下拉菜单永远不会返回所选的值,它似乎返回的东西像gridview + 1的行索引。

这是我如何选择行中的值的一个例子:

3746521

当我做同样的操作时,他们会这样保存:

23.45671

这是我保存的代码,只是为了让你知道我已经尝试过selectedvalue, selectedindex, selecteditem和text,它们都做同样的事情。

//save the data
            foreach (GridViewRow r in gvOrder.Rows)
            {
                if (r.RowType == DataControlRowType.DataRow)
                {
                    //get the details from the grid
                    Label lblED = r.FindControl("lblED") as Label;
                    DropDownList ddl = r.FindControl("ddlNewO") as DropDownList;
                    TextBox txt = r.FindControl("txtNewT") as TextBox;
                    Label ID = r.FindControl("lblID") as Label;
                    int Order = Convert.ToInt16(ddl.SelectedValue);
                    string Text = "";
                    if (txt.Text != "")
                    {
                        Text = txt.Text;
                    }
                    //save each row to the db
                    try
                    {
                        SqlConnection dbConnection = new SqlConnection();
                        dbConnection.ConnectionString = GetConnection.GetConnectionString();
                        SqlCommand dbCommand = new SqlCommand("PL_UserColumns_Save", dbConnection);
                        dbCommand.CommandType = CommandType.StoredProcedure;
                        dbCommand.Parameters.Add("@PageID", SqlDbType.Int).Value = Convert.ToInt16(constPageID);
                        dbCommand.Parameters.Add("@UserID", SqlDbType.Int).Value = Convert.ToInt16(strUserID);
                        dbCommand.Parameters.Add("@Order", SqlDbType.Int).Value = Convert.ToInt16(Order);
                        dbCommand.Parameters.Add("@ColumnID", SqlDbType.Int).Value = Convert.ToInt16(ID.Text);
                        dbCommand.Parameters.Add("@ED", SqlDbType.Int).Value = Convert.ToInt16(lblED.Text);
                        dbCommand.Parameters.Add("@Text", SqlDbType.NVarChar).Value = "'" + Text + "'";
                        dbConnection.Open();
                        dbCommand.ExecuteNonQuery();
                        dbConnection.Close();
                    }
                    catch (SqlException ex)
                    {
                        ExceptionHandling.SQLException(ex, constPageID, constIsSiteSpecific);
                    }
                }
            }

无法获取下拉选择的值

要获取DropDownList的选定值,您必须使用以下命令:

ddl.SelectedItem.Value

您可以查看Request.Form以获取张贴的值。假设您的下拉名称将随行增加,例如ddlNew0, ddlNew1等,那么您可以这样做

 var value = Request.Form["ddlNew" + rowIndex];

我有两种可能的方法:

  1. 添加一点JavaScript来填充隐藏字段,然后在后端获取并分离值
  2. 添加自动回发下拉和onClick方法。还将项目id作为参数传递。然后在onclick方法中进行保存操作。

我更喜欢第二个。