我的页面中有这个:
<asp:DropDownList ID="membros" runat="server">
</asp:DropDownList>
在后面的代码中,我有这个:
protected void Page_Load(object sender, EventArgs e)
{
members.Items.Clear();
members.Items.Add(new ListItem("Choose...", ""));
foreach (DataRow item in com.Execute("select * from tableMembers").Rows)
{
members.Items.Add(new ListItem(item["name"].ToString(), item["id_user"].ToString()));
contForeach++;
}
}
当我尝试从SelectedIndex获取值时,我不能,因为他总是让我0独立于我选择的索引。
答案 0 :(得分:2)
将其放在if(!IsPostBack)
中,以便它可以在首次加载表单时加载下拉列表,现在每次加载页面时都会加载,这样您就错过了选择。
if(!IsPostBack)
{
members.Items.Clear();
members.Items.Add(new ListItem("Choose...", ""));
foreach (DataRow item in com.Execute("select * from tableMembers").Rows)
{
members.Items.Add(new ListItem(item["name"].ToString(), item["id_user"].ToString()));
contForeach++;
}
}
答案 1 :(得分:2)
除了提到的IsPostBack
之外,你应该这样做,而不是循环数据
修改您的标记
<asp:DropDownList ID="membros" runat="server" DataTextField="name" DataValueField="user_id">
从代码后面,绑定数据
if(!IsPostBack)
{
DataTable dt = com.Execute("select * from tableMembers");
members.DataSource = dt;
members.DataBind();
members.Items.Insert(0, new ListItem("Choose...", ""));
}
DropdownList,GridView,DataList等绑定控件具有DataSource
属性,您可以使用该属性为它们分配集合,它们将遍历它并提取数据。