无法从下拉列表中的项目获取值

时间:2013-01-26 16:22:23

标签: asp.net

我的页面中有这个:

<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独立于我选择的索引。

2 个答案:

答案 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属性,您可以使用该属性为它们分配集合,它们将遍历它并提取数据。