【发布时间】:2018-05-09 07:06:23
【问题描述】:
我正在使用 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);
当我在检查页面时检查结果 int 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>
但它总是从按钮单击中的选定值发送第一个值
【问题讨论】:
-
在您发布的 HTML 中,“已选择”选项显示为 1,对应于您获得的值。
-
这里的问题是,在每次页面加载时他都在投标 DropDownList ,而不是检查页面的 isPostBack 属性。试试我在下面给出的解决方案。它会解决问题。