繁体   English   中英

无法获得下拉选择的值

[英]Unable to get dropdown selected value

我有一个gridview,每行上都有一个下拉列表。 DDL填充了从1开始的数字-有多少行。

我有一个保存按钮,可以使用一个简单的循环为每一行保存每个DDL的值,但是问题是下拉列表从不返回所选值,它似乎返回诸如gridview + 1的行索引之类的内容。

这是如何选择行中值的示例:

3 7 4 6 5 2 1

当我执行相同操作时,这就是它们的保存方式:

2 3 4 5 6 7 1

这是我保存的代码,只是让您知道我已经尝试了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方法中进行保存。

我希望第二个。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM