0

我已经在我的网页中实现了一个下拉列表并将其绑定到我创建的数据源但是无论我在页面中选择什么,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

也许您应该添加AutoPostBack="false"DropDownList 的标记代码。

如果此选项未设置或未设置为 true,则每次更改下拉列表中的对象时都会触发 page_load。

这一直是我的项目中出现此类问题的原因。

于 2013-07-17T09:29:05.050 回答
0

将下拉列表的 AutoPostBack 属性更改为 true。检查错误是否仍然存在。

于 2013-07-17T09:34:15.383 回答
0

我有一个类似的问题。问题是您正在填写表单加载中的第一个下拉列表,并且每次发生某些事件时它都会加载表单我猜您没有保留更新面板所以它再次填写您的第一个下拉列表并导致选择index changed 事件触发,这使您的 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 回答
0

如果(IsPostBack)返回,则添加此代码;到您的 Page_Load 方法。

于 2017-04-30T07:43:55.343 回答