代码之家  ›  专栏  ›  技术社区  ›  Ryan Lundy

更新更新面板外的控件

  •  13
  • Ryan Lundy  · 技术社区  · 17 年前

    所以我有一个 UserControl 有一些级联 DropDownList 在上面。从列表1中选择将启用列表2,而列表2反过来启用列表3。在所有三个列表中进行选择后,可以转到下一页。

    这个 下拉框 S都在一个 UpdatePanel . 但是“下一页”按钮在 UpDATEPANEL . 该按钮应该被禁用,直到所有三个列表都有一个选择,然后再次启用。但因为按钮在 UpDATEPANEL ,我进行选择时不会更新。( 编辑 :下一页按钮位于还包含 用户控制 )

    我知道解决这个问题的一种方法:

    var scriptManager = ScriptManager.GetCurrent(this.Page);
    scriptManager.RegisterPostBackControl(dropDownList1);
    scriptManager.RegisterPostBackControl(dropDownList2);
    scriptManager.RegisterPostBackControl(dropDownList3);
    

    这样可以确保在更改任何下拉列表时回发,以便按钮可以更新。但如果我这样做,我可能会简化摆脱 UpDATEPANEL 首先。

    有没有其他方法,通过一些巧妙的javascript或其他东西,我可以在 UpDATEPANEL 不用放弃Ajax?

    4 回复  |  直到 11 年前
        1
  •  7
  •   thmsn    17 年前

    您不能在“下一页”周围添加一个更新面板,然后在DropDownList更新面板中添加触发器以触发下一页更新面板吗?

    只是抛开想法,但实际上没有尝试过:)

        2
  •  12
  •   Jim Petkus    17 年前

    在next按钮周围放置一个updatepanel,并为每个下拉列表创建一个触发器,以便它触发异步回发。前任:

    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="dropDownList1" />
        <asp:AsyncPostBackTrigger ControlID="dropDownList2" />
        <asp:AsyncPostBackTrigger ControlID="dropDownList3" />
    </Triggers>
    
        3
  •  2
  •   Simon    11 年前

    您可以在更新面板外更新一个控件,方法是将其放入更新面板2并说 update_panel2.update() .

    注意 UpdateMode 必须将UpdatePanel的设置为 conditional 为了这个工作。

        4
  •  1
  •   Adam Lassek    17 年前

    最好在javascript中完成,并在click事件处理程序中进行服务器端验证检查。

    快速jquery示例:

    //assuming the dropdowns all have the css class "cascade"
    $('select.cascade').change(function() {
      If ($('option:selected',this).length == 3) {
        $('input[id$=btnNext]').removeAttr('disabled');
      }
    });
    
    推荐文章