【问题标题】:Dropdown not binding Inside Ajax Update panel下拉菜单不绑定在 Ajax 更新面板内
【发布时间】:2012-08-13 07:03:05
【问题描述】:

我正在使用下面的代码来填充另一个下拉列表的选择。 但不知何故,当在 ddlTypes 中选择项目时,不会填充 ddlSubTypes

在 ddlTypes 的 selectedindex 更改事件上,我正在绑定 ddlSubTypes。

<tr>
    <td class="style3">
        <asp:ScriptManager ID="scma" runat="server">
        </asp:ScriptManager>
        <asp:UpdatePanel ID="UP1" runat="server">
            <ContentTemplate>
                <asp:DropDownList ID="ddlTypes" runat="server" Width="200px" AutoPostBack="true" OnSelectedIndexChanged="ddlTypes_SelectedIndexChanged1">
                </asp:DropDownList>
            </ContentTemplate>
        </asp:UpdatePanel>
    </td>
</tr>
<tr>
    <td class="style3">
        <asp:UpdatePanel ID="UP2" runat="server">
            <ContentTemplate>
                <asp:DropDownList ID="ddlSubTypes" runat="server" Width="200px">
                </asp:DropDownList>
            </ContentTemplate>
        </asp:UpdatePanel>
    </td>
</tr>



Protected Sub ddlTypes_SelectedIndexChanged1(ByVal sender As Object, ByVal e As System.EventArgs) Handles ddlTypes.SelectedIndexChanged
        Try
            'Populate schemes
            ddlSubTypes.Items.Clear()
            Dim ID As Integer = ddlTypes.SelectedValue
            Dim dt As DataTable = IterateSubtypesContents(ID)

            ddlSubTypes.DataTextField = dt.Columns("Type").ToString()
            ddlSubTypes.DataValueField = dt.Columns("ID").ToString()
            ddlSubTypes.DataSource = dt
            ddlSubTypes.DataBind()

            UP2.Update()
        Catch ex As Exception

        End Try
    End Sub

【问题讨论】:

  • 为什么要放置两个独立的更新面板?如果可能,不要将整个 放在更新面板中,而不是放在
    标记中。
  • @WaqarJanjua 是的,我先这样做了。我在单个更新面板中有两个下拉菜单。但它也不起作用。
  • ok 试试这个:在第二个更新面板 (UP2) 中放置一个 asynpostbacktrigger 并将其控件 ID 设置为 ddlTypes 并且不要在后面的代码中调用 UP2.Update 方法。
  • 也许您在任何回发中填充 ddlTypes?
  • 并将您的脚本管理器移出桌面。无需将其放置在 table td 标记中。

标签: asp.net .net ajax updatepanel scriptmanager


【解决方案1】:

您应该向第二个更新面板添加一个触发器,该触发器在第一个下拉列表的 selectedIndexChanged 事件上触发。

<asp:UpdatePanel ID="UP2" runat="server">
  <ContentTemplate>
    <asp:DropDownList ID="ddlSubTypes" runat="server" Width="200px">
    </asp:DropDownList>
   </ContentTemplate>
   <Triggers>
     <asp:AsyncPostBackTrigger ControlID="Control That Triggers this Panel" EventName="Desired Event that triggers" />
   </Triggers>
</asp:UpdatePanel>

【讨论】:

  • 我收到此错误:在 UpdatePanel 'UP2' 中的触发器的关联控件 'ddlTypes' 上找不到名为 'ddlTypes_SelectedIndexChanged1' 的事件。
  • 你必须创建事件服务器端。现在触发器找不到在服务器端处理的事件。
  • 创建活动!!!我只是将我的第一个下拉列表的 selectedindexchange 事件名称放到我的第二个 dropdwon 的 EvenName 中。错了吗?
  • 在您的代码后台页面中是否有一个事件名称与您在触发器中使用的名称相同?这就是你得到的错误
猜你喜欢
  • 2011-06-17
  • 1970-01-01
  • 2014-02-21
  • 1970-01-01
  • 2011-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-16
相关资源
最近更新 更多