【问题标题】:Drop Down List Selected Index changed not working in Update panel下拉列表选定的索引更改在更新面板中不起作用
【发布时间】:2013-05-02 14:04:57
【问题描述】:

我在 UpdatePanel_2 中有一个下拉列表,当在 UpdatePanel_1 中单击 Button_1 时会填充它。

我的 ddlist 标记是,

<asp:DropDownList id="drop1" runat="server"  EnableViewState="true" AutoPostBack="true" OnSelectedIndexChanged="Drop1_SelectedIndexChanged" />

那么后面的代码就是,

 protected void Drop1_SelectedIndexChanged(object sender, EventArgs e)
        { }

我也尝试将 AutoPostback=true 放到我的 DropDownList 中,仍然没有成功。

我还添加了触发来更新面板 2,但没有任何收获,

       <Triggers>
    <asp:AsyncPostbackTrigger ControlID="drop1" EventName="SelectedIndexChanged" />
</Triggers>

我正在使用按钮而不是页面加载方法填充 DropDownList,请在回答之前阅读。 谢谢

【问题讨论】:

  • 我们无法判断,如果您的 SelectedIndex 方法为空,什么不起作用。请提供更多代码。
  • @Serv 你听说过调试时的断点吗?
  • 哦,我的印象是里面的代码有问题,不是选择的索引改变了,根本没有被触发。对不起 - 我的错。
  • 在所有情况下您都必须保留AutoPostBack=true

标签: c# webforms updatepanel


【解决方案1】:

检查数据以填充Page_Load 事件中的DropDownList,并始终检查IspostBack

if(!IsPostBack)
{
 //DropDownList configuration
}

使用EnableViewState

 <asp:DropDownList ID="ddlAddDepPlans" runat="server" AutoPostBack="true" EnableViewState="true" />

希望对你有帮助。

【讨论】:

  • 如果您阅读了我帖子的第一行,说明我没有使用 page_load 方法填充 ddl,谢谢
  • 您的问题的答案如何?我有完全相同的问题,不同之处在于我的前端标记中没有我的 DDL,而是完全在代码隐藏中创建它。无论我做什么,我的 SelectedIndexChanged 事件都不会触发。
  • EnableViewState 是我的关键
  • 我希望我有声望对此表示赞同。这是我犯的一个菜鸟错误,最终给我带来了与原始海报相同的问题。始终检查回发状态。我无法弄清楚为什么我无法访问 SelectedValue。事实证明,由于我没有检查回发加载,我的 DropDownList 在每次点击时都会重置其数据源,因此也会重置 SelectedValue!
【解决方案2】:

我有同样的问题。我的问题是我的 ListItems 的值都是一样的:D

<asp:DropDownList ID="ddlFilterLogins" runat="server" Visible="true" AutoPostBack="true">
    <asp:ListItem Value="0" Text="All"></asp:ListItem>
    <asp:ListItem Value="0" Text="Some"></asp:ListItem>
    <asp:ListItem Value="0" Text="Some more"></asp:ListItem>
</asp:DropDownList>

应该是这样的:

<asp:DropDownList ID="ddlFilterLogins" runat="server" Visible="true" AutoPostBack="true">
    <asp:ListItem Value="0" Text="All"></asp:ListItem>
    <asp:ListItem Value="1" Text="Some"></asp:ListItem>
    <asp:ListItem Value="2" Text="Some more"></asp:ListItem>
</asp:DropDownList>

希望这会有所帮助。这有时可能很难找到:)

【讨论】:

  • 花了 2 个小时然后我找到了你的答案。它有帮助
【解决方案3】:

请,当您在 Page_Load() 中初始化它时,请检查是否不是回发。如果你不这样做,你将始终设置默认值,这将替换事件中设置的值。

if(!IsPostBack)
{
//DropDownList configuration
}

【讨论】:

  • 对不起:S?我不知道你想说什么,先生
  • 我是说你需要在 !IsPostBack 条件中填充下拉列表,如果没有,每次你进行回发时都会丢失 selectedvalue 属性
  • 我想做部分回帖,先生
  • @user13814 部分回发是一种回发。你也需要按照我之前说的去做。
  • 我现在完全按照您说的做,但没有帮助,stackoverflow.com/questions/16442809/drop-down-list-resets
【解决方案4】:

您可以使用 Init 事件代替 SelectIndexChanged。 它对我来说很好。 希望你明白我的意思。

【讨论】:

    【解决方案5】:

    这对我来说也是一个有线问题。最后是因为下拉列表中的列表项相同,如下所示。在开发过程中,您可以使用相同的项目来进行测试。改变它们。

    <asp:ListItem>Business</asp:ListItem>
    <asp:ListItem>Business</asp:ListItem>
    <asp:ListItem>Business</asp:ListItem>
    <asp:ListItem>Business</asp:ListItem>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-24
      • 2015-04-08
      相关资源
      最近更新 更多