无法获取下拉选择的值
本文关键字:选择 获取 | 更新日期: 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];
我有两种可能的方法:
- 添加一点JavaScript来填充隐藏字段,然后在后端获取并分离值
- 添加自动回发下拉和
onClick
方法。还将项目id作为参数传递。然后在onclick方法中进行保存操作。
我更喜欢第二个。