![](/img/trans.png)
[英]Unable to get a selected foreign key value from dropdown in controller mvc
[英]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];
我会以两种可能的方式做到这一点:
onClick
方法上添加自动回发。 还将项目ID作为参数传递。 然后在onclick方法中进行保存。 我希望第二个。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.