【问题标题】:DropDownList resets to the first itemDropDownList 重置为第一项
【发布时间】:2015-11-03 06:02:04
【问题描述】:

我有两个绑定到 objectdatasource 下拉列表。

<asp:DropDownList ID="ddlProgram" runat="server" DataSourceID="ProgramsDS" 
     DataTextField="NAME" DataValueField="ID" AutoPostBack="True" 
     OnSelectedIndexChanged="ddlProgram_SelectedIndexChanged">
</asp:DropDownList>
<asp:ObjectDataSource ID="ProgramsDS" runat="server" 
     OldValuesParameterFormatString="original_{0}" SelectMethod="GetData" 
     TypeName="WebAdminTools.DATA.DSTableAdapters.ProgramTA" 
     UpdateMethod="Update">
</asp:ObjectDataSource>
<br/>
<asp:DropDownList runat="server" ID="ddlVersion" AutoPostBack="True" 
     OnSelectedIndexChanged="ddlVersion_SelectedIndexChanged" Width="158px" 
     DataSourceID="VersionDS" DataTextField="VERSION" 
     DataValueField="PROGRAM_ID"/>
<asp:ObjectDataSource ID="VersionDS" runat="server" 
     OldValuesParameterFormatString="original_{0}" 
     SelectMethod="GetData" 
     TypeName="WebAdminTools.DATA.DSTableAdapters.UpdateTA">
    <SelectParameters>
        <asp:ControlParameter ControlID="ddlProgram" DefaultValue="0" 
             Name="P_ID" PropertyName="SelectedValue" Type="Int32"/>
    </SelectParameters>
</asp:ObjectDataSource>

我也有第二个下拉列表的onSelectionIndexChanged 事件处理程序。当我尝试从第二个下拉列表中选择项目时,它会重置为第一个。我试过这个guide我做错了什么?

编辑:

protected void ddlVersion_SelectedIndexChanged(object sender, EventArgs e)
{
    GetCompaniesForUpdate();
}

private void GetCompaniesForUpdate()
{
    ProgramVersionTA ta = new ProgramVersionTA();
    var dt = new DS.ProgramsVersionsDataTable();
    ta.Fill(dt, Convert.ToInt32(ddlVersion.SelectedValue));
    var selectedVersion = Version.Parse(ddlVersion.SelectedValue);
    var companyForUpdate = dt.Where(c => Version.Parse(c.MAX_AVAILABLE_VERSION) > selectedVersion
                                         && Version.Parse(c.VERSION) < selectedVersion);
    lbCompanies.DataSource = companyForUpdate;
    lbCompanies.DataMember = "NAME";
    lbCompanies.DataBind();
}

【问题讨论】:

  • 告诉我们ddlVersion_SelectedIndexChanged
  • 我在那里设置了一个断点。它永远不会触发。
  • 我已经使用 Ajax 控件工具包级联下拉列表解决了这个问题

标签: c# asp.net webforms


【解决方案1】:

我认为这是因为回发。如果你在 form_load 上为下拉列表设置一个值,请确保你把它放在 if(!Page.IsPostBack) 中。

【讨论】:

  • 您是否将自动回发设置为 true?关于你在 selectedindexchange 上放置的断点,在你打开它之前它不会触发。
  • 你更改 Dropdown2 后页面是否重新加载?
  • 看起来什么都没有发生。但是,如果我尝试返回第二个下拉菜单,则将所选索引设置为最后一项
猜你喜欢
  • 2010-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-23
相关资源
最近更新 更多