gridview上的下拉列表仅将第一个值更新为数据库ASP.Net

时间:2010-12-08 20:08:52

标签: asp.net gridview drop-down-menu

我很多天都在寻找这个问题的解决方案,请帮忙。 我有一个网格视图,上面有五个下拉列表。我在每行编辑更新和取消编辑按钮。 下拉列表正在更新数据库,但只有下拉列表中的第一个值,即使用户从下拉列表中选择第二个,第三个或任何其他值。

可能的原因是什么。这是我的行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();
        }        
    }

任何帮助都会受到很大的限制。 感谢

2 个答案:

答案 0 :(得分:0)

只需点击编辑按钮的下拉菜单,然后使用rowupdating事件并使用ddl.SelectedValue而不是ddl.SelectedItem.Value。您将找到所选的值。

答案 1 :(得分:0)

您的Drop Downs可能会在您的Page_Load事件中重新设置。如果是,请在页面未回发时加载它们,如下所示:

if(!Page.IsPostBack) {
//set drop downs
}