我很多天都在寻找这个问题的解决方案,请帮忙。 我有一个网格视图,上面有五个下拉列表。我在每行编辑更新和取消编辑按钮。 下拉列表正在更新数据库,但只有下拉列表中的第一个值,即使用户从下拉列表中选择第二个,第三个或任何其他值。
可能的原因是什么。这是我的行Edit / CancelEdit和Updating Events。
protected void gvCustomers_RowEditing(object sender, GridViewEditEventArgs e)
{
gvCustomers.EditIndex = e.NewEditIndex;
BindData();
}
protected void gvCustomers_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
gvCustomers.EditIndex = -1;
BindData();
}
protected void gvCustomers_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
Label lblCustId = (Label)gvCustomers.Rows[e.RowIndex].FindControl("cust_id");
DropDownList ddlCsm = (DropDownList)gvCustomers.Rows[e.RowIndex].FindControl("CSM");
DropDownList ddlSrCsm = (DropDownList)gvCustomers.Rows[e.RowIndex].FindControl("SrCSM");
DropDownList ddlDE = (DropDownList)gvCustomers.Rows[e.RowIndex].FindControl("DE");
DropDownList ddlAE = (DropDownList)gvCustomers.Rows[e.RowIndex].FindControl("AE");
DropDownList ddlTE = (DropDownList)gvCustomers.Rows[e.RowIndex].FindControl("TE");
using (SqlConnection conn = new SqlConnection(connectionString))
{
try
{
conn.Open();
string sql = "Update SOME_TABLE SET CSM= @CSM, SrCSM= @SrCSM ,DE=@DE,AE=@AE,TE=@TE where cust_id=@cust_id";
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
cmd.Parameters.Add("@CSM", SqlDbType.VarChar).Value = ddlCsm.SelectedItem.Value;
cmd.Parameters.Add("@SrCSM", SqlDbType.VarChar).Value = ddlSrCsm.SelectedItem.Value;
cmd.Parameters.Add("@AE", SqlDbType.VarChar).Value = ddlAE.SelectedItem.Value;
cmd.Parameters.Add("@DE", SqlDbType.VarChar).Value = ddlDE.SelectedItem.Value;
cmd.Parameters.Add("@TE", SqlDbType.VarChar).Value = ddlTE.SelectedItem.Value;
cmd.ExecuteNonQuery();
}
}
catch
{ }
gvCustomers.EditIndex = -1;
BindData();
}
}
任何帮助都会受到很大的限制。 感谢
答案 0 :(得分:0)
只需点击编辑按钮的下拉菜单,然后使用rowupdating事件并使用ddl.SelectedValue而不是ddl.SelectedItem.Value。您将找到所选的值。
答案 1 :(得分:0)
您的Drop Downs可能会在您的Page_Load事件中重新设置。如果是,请在页面未回发时加载它们,如下所示:
if(!Page.IsPostBack) {
//set drop downs
}