下拉列表“所选项目”未显示正确的项目

时间:2019-08-04 07:17:02

标签: c# asp.net sql-server

// fill from database
SqlConnection cn = new SqlConnection(GlobalData.connectionstring);
string readnamesquery = "select cwFullTitle from tbCowWorkers";

cn.Open();

SqlCommand cmd = new SqlCommand(readnamesquery, cn);

SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);

ddlUsers.DataSource = dt;
ddlUsers.DataValueField = "cwFullTitle";
ddlUsers.DataTextField = "cwFullTitle";
ddlUsers.DataBind();

cn.Close();

// insert selected value to database
SqlConnection cn = new SqlConnection(GlobalData.connectionstring);
string registerQuery = "insert into Depot (dTdeliveryName) values (N'"+ddlUsers.SelectedValue.ToString()+"')";

SqlCommand cmd = new SqlCommand(registerQuery, cn);

cn.Open();
cmd.ExecuteNonQuery();
cn.Close();

我从SQL Server填写一个下拉列表,然后将所选项目发送到SQL Server中的另一个表;但它会将Dropdownlist的第一项发送为选定项。

所选项目未更改,并返回默认值。

2 个答案:

答案 0 :(得分:2)

原因很明显,您要填充下拉列表,然后插入记录,因此它必然会出现DropdownList的第一项。

我建议您将填充下拉列表的代码分离到另一个函数中,并仅在DropDownList的selected_index更改(ddl_SelectedIndexChanged)上进行插入。在此ddl_SelectedIndexChanged函数中,只需检查下拉列表的选定值并将其插入到您的目标表中(请记住不要调用该函数以加载/填充共享列表中当前正在执行的下拉列表)。

类似的东西

  protected void Page_Load(object sender, EventArgs e)
  {
    if (!IsPostBack)
    {
     SqlConnection cn = new SqlConnection(GlobalData.connectionstring);
     string readnamesquery = "select cwFullTitle from tbCowWorkers";

     cn.Open();

     SqlCommand cmd = new SqlCommand(readnamesquery, cn);

     SqlDataAdapter da = new SqlDataAdapter(cmd);
     DataTable dt = new DataTable();
     da.Fill(dt);

     ddlUsers.DataSource = dt;
     ddlUsers.DataValueField = "cwFullTitle";
     ddlUsers.DataTextField = "cwFullTitle";
     ddlUsers.DataBind();

     cn.Close();
    }
  }

  protected void ddlUser_SelectedIndexChanged(object sender, EventArgs e)
  {
     // insert selected value to database
    SqlConnection cn = new SqlConnection(GlobalData.connectionstring);
    string registerQuery = "insert into Depot (dTdeliveryName) values 
    (N'"+ddlUsers.SelectedValue.ToString()+"')";

    SqlCommand cmd = new SqlCommand(registerQuery, cn);

    cn.Open();
    cmd.ExecuteNonQuery();
    cn.Close();
  }

希望这会有所帮助!

答案 1 :(得分:0)

 protected void Page_Load(object sender, EventArgs e)
  {
    if (!IsPostBack)
    {
     //Loading Dropdown by calling This.
     LoadDdl();
    }
  }
//Load Dropdown From Database.
protected void LoadDdl(){
     SqlConnection cn = new SqlConnection(GlobalData.connectionstring);
     string readnamesquery = "select cwFullTitle from tbCowWorkers";

     cn.Open();

     SqlCommand cmd = new SqlCommand(readnamesquery, cn);

     SqlDataAdapter da = new SqlDataAdapter(cmd);
     DataTable dt = new DataTable();
     da.Fill(dt);

     ddlUsers.DataSource = dt;
     ddlUsers.DataValueField = "cwFullTitle";
     ddlUsers.DataTextField = "cwFullTitle";
     ddlUsers.DataBind();

     cn.Close();
}
//Inserting Item to another table by selected index change.
  protected void ddlUser_SelectedIndexChanged(object sender, EventArgs e)
  {
//Checking If it's not the default value.
   if(ddlUser.SelectedIndex != -1){
  // insert selected value to database
    SqlConnection cn = new SqlConnection(GlobalData.connectionstring);
    string registerQuery = "insert into Depot (dTdeliveryName) values 
    (N'"+ddlUsers.SelectedValue.ToString()+"')";

    SqlCommand cmd = new SqlCommand(registerQuery, cn);

    cn.Open();
    cmd.ExecuteNonQuery();
    cn.Close();
    }
  }