我正在使用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>
但它总是从按钮单击
中的选定值发送第一个值答案 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
}
}