DropDownList控件asp.net SelectedValue

时间:2018-05-09 07:06:24

标签: c# asp.net

我正在使用DropdownList控件...首先,我使用此代码绑定Page_Load()中的下拉控件

   combo.DataSource = ds3.Tables[0];//combo is the ID of DropDownList Control
            combo.DataTextField = ds3.Tables[0].Columns["ProjectName"].ColumnName.ToString();
            combo.DataValueField = ds3.Tables[0].Columns["ID"].ColumnName.ToString();
            combo.DataBind();

然后我使用此代码中的所选值按钮单击

   protected void btn_newUser_Click(object sender, EventArgs e)
    {


    cmd1 = new SqlCommand("SP_createUserFroProjects", con);
    cmd1.CommandType = CommandType.StoredProcedure;
    int m =Convert.ToInt32( combo.SelectedValue);
    cmd1.Parameters.AddWithValue("@projectID",m);
    cmd1.Parameters.AddWithValue("@userName", txt_User.Text);
    cmd1.Parameters.AddWithValue("@password", txt_pass.Text);
    cmd1.Parameters.AddWithValue("@name", txt_User_Name.Text);

    ds4 = new DataSet();
    adpt4 = new SqlDataAdapter(cmd1);
    adpt4.Fill(ds4);

当我检查结果时,在页面检查中,m总是等于1,html是

<select name="combo" id="combo">
    <option selected="selected" value="1">project1</option>
    <option value="2">project2</option>
    <option value="3">project3 </option>
    <option value="4">project4 </option>
    <option value="5">lubdbsljv</option>
    <option value="10">project5</option>
    <option value="1018">test4</option>
    <option value="1019">test5 </option>
    <option value="1020">test6</option>
    <option value="1021">test7</option>
    <option value="1022">testtt</option>
    <option value="1023">new</option>
    <option value="1024">new2</option>
    <option value="1025">new5</option>
    <option value="1026">next</option>
    <option value="1027">new nnn</option>
    <option value="1028">ttttt</option>
    <option value="1029">new project 5 </option>
    <option value="1030">newprj</option>
    <option value="1031">projectnewtest</option>

</select>

但它总是从按钮单击

中的选定值发送第一个值

2 个答案:

答案 0 :(得分:1)

在您的代码文件页面加载方法中尝试此操作。

if (!Page.IsPostBack)
    {
        combo.DataSource = ds3.Tables[0];//combo is the ID of DropDownList Control
        combo.DataTextField = "ProjectName";
        combo.DataValueField = "ID";
        combo.DataBind();
    }

答案 1 :(得分:1)

在您的Page_Load方法中,如果您不检查它是否是回发,则每次单击按钮或任何其他回发页面的控件时,将执行填充组合框的代码。

这意味着每次单击按钮时,都会填充组合框填充,所选索引将为0,所选值将是列表的第一个值。

你应该这样检查:

private void Page_Load()
{

 // The code here will execute on every postback (button click etc..).

  if (!IsPostBack)
   {
      //The code will execute if the page load        
   }
}