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();
    }

    效果图:

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











     

  • 相关阅读:
    又开始写代码了
    C# 调用office 2007 及 SaveAsPDFandXPS.exe 将Word、Excel、PPT转换为PDF文件
    64位机子上未能加载集
    在 vs 2003 转 2008 时WEB项目不能转换
    【第一弹】测试小学生,终于有博客了
    RobotFramwork + Appium+ Andriod 环境搭建
    写webpart
    backup
    获取MOSS当前登录用户信息
    rotate with different image(轮换显示图片)
  • 原文地址:https://www.cnblogs.com/gawking/p/2946448.html
Copyright © 2011-2022 走看看