zoukankan      html  css  js  c++  java
  • 在自定义控件内触发一个事件改变其他表单元素的值

    因为考虑到自定义控件不能直接触发一个事件来与表单中其他元素进行交互,所以需要间接的来触发。

    把一个事件定义为属性。

    在自定义控件里添加如下脚本:

    <script language="javascript" type="text/javascript">
        function OnSelectedChanged() {
            <%=this.OnChanged %>;
        }
    </script>

    后台定义一个事件的属性:

    /// <summary>
    /// javascript事件
    /// </summary>
    public string OnChanged
    {
          get;
          set;
    }

    在Page_Load里给自定义控件的组合控件的某一个或多个控件绑定脚本:

    ddlDistrict.Attributes.Add("onchange", "javascript:OnSelectedChanged();");

    在调用自定义控件的页面编写脚本调用后台触发自定义控件值改变时对于其他表单元素的赋值方法:

    //选择区域后填充办公地址
    function onSelectedChanged(){
          $("#<%=this.btnShowWorkAddress.ClientID %>").click();
    }
    按钮,设置为隐藏,调用后台的一个方法:
    <asp:Button ID="btnShowWorkAddress" runat="server" style="display:none;" OnClick="ShowWorkAddress" />
    
    

    使用VS自带的ajax控件:

    <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>

    前台Page_Load里把隐藏按钮注册为ajax控件:

    
    
    this.ScriptManager1.RegisterAsyncPostBackControl(btnShowWorkAddress);
    
    

    前台的自定义控件指定上面自定义的方法OnChanged

    
    
    <uc1:Area ID="Area1" runat="server" OnChanged="onSelectedChanged()"></uc1:Area>
    
    

    如果不希望触发自定义控件后页面刷新,可使用ajax控件把需要因自定义控件触发变动其值的控件包含在内,UpdateMode指定为Conditional

    
    
    <asp:UpdatePanel ID="upOffiAddr" runat="server" UpdateMode="Conditional">
           <ContentTemplate>
           <webcontrol:UserTextBox ID="txtOffiAddr" FieldName="OfficeAddress" runat="server"
    Width="160px" CanBeNull="False" RequiredFieldType="字符校验" onPropertyChange="GetAddressName();"></webcontrol:UserTextBox>
           </ContentTemplate>
    </asp:UpdatePanel>
    
    

    最后是后台给控件赋值的方法:

    protected void ShowWorkAddress(object sender, EventArgs e)
    {
        txtOffiAddr.Text = GetRegionName(int.Parse(Area1.AreaText), int.Parse(Area1.ProvinceText), int.Parse(Area1.CityText), int.Parse(Area1.DistrictidText));
    
        //更新需要更新的控件区域   
        upOffiAddr.Update();
    }

    效果图:

    选择行政区域的自定义控件后在其他表单元素控件中显示其值:











     

  • 相关阅读:
    笔记:Linux进程间通信机制
    Linux下C/C++和lua交互-Table
    @JsonFormat时间格式化注解使用
    关于 mybatis 报invalid comparison: java.util.Arrays$ArrayList and java.lang.String异常
    @RestControllerAdvice作用及原理
    MySQL 中 datetime 和 timestamp 的区别与选择
    idea提交svn忽略.class等文件的相关配置(so easy)
    PLSQL Developer建表时注释(COMMENT)中文乱码的解决方案(Windows)
    oracle客户端安装与配置
    PLSQL安装、PLSQL汉化、激活
  • 原文地址:https://www.cnblogs.com/gawking/p/2946448.html
Copyright © 2011-2022 走看看