0

Web ページにドロップダウン リストを実装し、作成したデータ ソースにバインドしましたが、ページで何を選択しても、dropdownlist.selectedItem常に最初の要素が取得され、SelectedIndex常に 0 になります。他の例と理由を見つけることができませんでした。
データ ソースの作成とバインドのコードは次のとおりです。

 public void bindLanguage() {  
        DropDownList1.DataSource = CreateDataSource();  
        DropDownList1.DataTextField = "language";  
        DropDownList1.DataValueField = "value";  
        DropDownList1.DataBind();  
    }  
 public ICollection CreateDataSource()  
    {  
        string[] allLan = System.IO.File.ReadAllLines(MyGlobal.LanFile);
        DataTable dt = new DataTable();
        DataRow dr;
        dt.Columns.Add(new DataColumn("language", typeof(string)));
        dt.Columns.Add(new DataColumn("value", typeof(string)));
        foreach (string lan in allLan)
        {
            dr = dt.NewRow();
            dr[0] = lan.Split(',')[0];
            dr[1] = lan.Split(',')[1];
            dt.Rows.Add(dr);
        }
        DataView dv = new DataView(dt);
        return dv;
    }

そしてbindLanguage()、page_load を呼び出します。
私の aspx のコードは次のとおりです。

<asp:DropDownList ID="DropDownList1" runat="server" ForeColor="Black">
</asp:DropDownList>
4

4 に答える 4

0

私は同様の問題を抱えていました.問題は、フォームロードで最初のドロップダウンリストに入力していて、何らかのイベントが発生するたびにフォームをロードすることです.更新パネルを保持していないと思います.インデックスが変更されたイベントが発生し、DropDownList1 がインデックス 0 を何度も選択します。

    public void bindLanguage() {  
            if(!Page.IsPostBack)
             {
               DropDownList1.DataSource = CreateDataSource();  
               DropDownList1.DataTextField = "language";  
               DropDownList1.DataValueField = "value";  
               DropDownList1.DataBind();  
              }
        }  

これを試して 。

于 2014-09-11T05:32:14.190 に答える