1

我的页面中有这个:

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

4

2 回答 2

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可用于为它们分配集合的属性,它们将遍历它并提取数据。

于 2013-01-26T16:40:08.653 回答
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++;
        }
     }
于 2013-01-26T16:26:06.963 回答