【问题标题】:drop down list index always stay at 0下拉列表索引始终保持在 0
【发布时间】:2013-07-17 09:16:53
【问题描述】:

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

我在 page_load 中调用 bindLanguage()
这是我的 aspx 中的代码:

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

【问题讨论】:

  • 你能显示用于检查 DropDownlist 的选定索引的代码吗?另请显示 Page_Load 事件的代码。这肯定是犯了一些错误。
  • 在 Page_Load() 中检查 if(!IsPostBack){//your code}。希望它有效。
  • 你是对的!我没有把我的方法调用放在 if(!IsPostBack){} 中,现在它可以工作了。谢谢你指出。你能把这个写成答案,以便我标记它吗?

标签: asp.net datasource html-select


【解决方案1】:

我遇到了类似的问题。问题是您正在填写表单加载中的第一个下拉列表,并且每次发生某些事件时它都会加载表单,我猜您没有保留更新面板,所以它再次填写您的第一个下拉列表并导致选定的索引更改事件触发,这使您的 DropDownList1 一次又一次地选择索引 0。

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

试试这个。

【讨论】:

    【解决方案2】:

    也许你应该在 DropDownList 的标记代码中添加AutoPostBack="false"

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        将此代码 if (IsPostBack) return; 添加到您的 Page_Load 方法中。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-01-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-07-02
          • 1970-01-01
          相关资源
          最近更新 更多