You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

绑定SQL表的DropdownList保存时未写入目标SQL表问题求助

问题分析与解决方案

核心问题

你的代码中,Page_Load事件里的DropdownList绑定逻辑未放在!IsPostBack判断内,导致每次页面回发(比如点击保存按钮)时,都会重新绑定DropdownList1和DropdownList4,直接覆盖用户之前选择的选项。这就造成btnSave_Click事件中获取的SelectedItem.Text是重新绑定后的默认值,而非用户实际选择的内容。

修复步骤

1. 调整Page_Load中的绑定逻辑

将DropdownList的绑定代码移到!IsPostBack代码块内,确保只有首次加载页面时才执行绑定:

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        btnDelete.Enabled = false;
        
        string mainconn = ConfigurationManager.ConnectionStrings["Reporting_SystemConnectionString"].ConnectionString;
        SqlConnection sqlconn = new SqlConnection(mainconn);
        string sqlquery = "select [ID],[Emp_ID] + '  ' + [Emp_Name] as FullName from [dbo].[Personnel] where [JurisdictionID] = 99";
        SqlCommand sqlcomm = new SqlCommand(sqlquery, sqlconn);
        sqlconn.Open();
        DataSet ds = new DataSet();
        SqlDataAdapter sda = new SqlDataAdapter(sqlcomm);
        sda.Fill(ds);
        DropDownList1.DataSource = ds;
        DropDownList1.DataTextField = "FullName";
        DropDownList1.DataValueField = "ID";
        DropDownList1.DataBind();
        DropDownList1.Items.Insert(0, new ListItem("", "0"));
        DropDownList4.DataSource = ds;
        DropDownList4.DataTextField = "FullName";
        DropDownList4.DataValueField = "ID";
        DropDownList4.DataBind();
        DropDownList4.Items.Insert(0, new ListItem("", "0"));
        sqlconn.Close();
    }
}

2. 修正Clear方法的逻辑

原Clear方法中清空了DropdownList1和4的Items,会导致后续页面回发时下拉列表为空。改为设置SelectedIndex为0,保留下拉选项的同时重置选中状态:

public void Clear()
{
    ID.Value = "";
    // 重置选中项而非清空列表
    DropDownList1.SelectedIndex = 0;
    DropDownList2.Items.Clear();
    TextBox1.Text = "";
    DropDownList3.Items.Clear();
    DropDownList4.SelectedIndex = 0;
    lblSuccessMessage.Text = lblErrorMessage.Text = "";
    btnSave.Text = "Save";
    btnDelete.Enabled = false;
}

3. 额外验证点

  • 确认Dispatcher_Roles表的Name和DispatcherCovering字段类型为nvarchar(max),与存储过程参数类型一致,避免因类型不匹配导致数据写入失败。
  • 若业务需要存储的是用户选择项的ID(而非显示文本),可将参数值改为DropDownList1.SelectedValue,同时确保存储过程和数据库字段的类型与ID匹配(比如int类型)。

内容的提问来源于stack exchange,提问作者Walter G

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 05:25:32