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

フォームが最初に読み込まれるときにドロップダウンを読み込むことができるように配置し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 に答える
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 に答える