2013-02-17 51 views
0

问题是我从下拉列表中获取名称,然后从表中获取该名称的学生ID。我在访问下拉列表值时遇到问题

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     DropDownList ddl = sender as DropDownList; 
     stud_name1 = ddl.SelectedValue;// sends the value 
    // Label1.Text = ddl.SelectedValue; 

     string getquery = "select studnt_id from Student where name='"+stud_name1+"'"; 

     getidcon.Open(); 
     SqlCommand getid = new SqlCommand(getquery, getidcon); 
     stdid1 = ((int)getid.ExecuteScalar());// gives the id in return to selection 

    // Session [stdid1] 
     // Label1.Text = stdid1.ToString();// testing value 

     // get the roll number 
    } 

让我将它存储在stdid1全局变量的ID之后,但我没有得到存储在按钮代码stdid1变量的值。

protected void Button1_Click(object sender, EventArgs e) 
    { 
     Label1.Text = stdid1.ToString(); 
    } 
+0

为什么你首先将它存储在全局变量中。为什么你不能像'Label1.Text = DropDownList1.SelectedValue.ToString()' – ZedBee 2013-02-17 21:26:24

+0

那样访问它就是这样。我从下拉列表中获得名称,然后我得到与该名称表单数据库相对应的id。 当用户点击按钮进行注册时,我在注册表中输入该ID,因为它与该表具有外键关系。 – 2013-02-17 21:37:15

回答

3

所以stdid1是这个类中的一个字段。变量不会在ASP.NET中的回发中持久化,只要页面呈现给客户端,变量就会被释放。

所以你可以使用ViewStateSession来存储它。但是我不知道为什么当你有DropDownListSelectedValue存在于ViewState时,为什么还需要另一个变量。

protected void Button1_Click(object sender, EventArgs e) 
{ 
    Label1.Text = DropDownList1.SelectedValue; 
} 

Nine Options for Managing Persistent User State in Your ASP.NET Application

更新

再次阅读您的问题后,我已经看到了你要存储在该变量的ID,但DropDownList只有名字。所以我假设你已经使用了名称DataTextFieldDataValueField。使用文本的名称和值的标识。

DropDownList1.DataTextField = "studnt_id"; 
DropDownList1.DataValueField = "name"; 
DropDownList1.DataSource = getStudents(); 
DropDownList1.DataBind(); 
+0

我需要一个其他变量,因为我从下拉列表中选择的名称中获取“id”。 ,然后使用该ID在用户按下的按钮中注册该人员。 – 2013-02-17 21:30:33

+0

+1 - 绝对ViewState和会话是更好的选择 – ZedBee 2013-02-17 21:30:38

+0

@MuneebHassan:再次阅读你的问题后,我已经看到了。但为什么你不把ID存储在'DropDownList'的'SelectedValue'属性中?您已将该名称用作DataTextField **和** DataValueField。使用文本的名称和值的ID。 – 2013-02-17 21:35:15

0

我建议你尝试移动你的代码到按钮单击事件,而不是SelectedIndexChanged事件,因为它似乎你并不需要使DB调用直到按钮被按下实际。

+0

但我可以得到按钮点击事件中的下拉列表的选定值? – 2013-02-17 21:31:20

+0

听Tim在另一个答案中告诉你的是什么。我会upvote他的答案,是的,你应该能够访问下拉列表值。 – 2013-02-17 21:35:20