在自定义控件内触发一个事件改变其他表单元素的值
2013-03-06 17:06
411 查看
因为考虑到自定义控件不能直接触发一个事件来与表单中其他元素进行交互,所以需要间接的来触发。把一个事件定义为属性。在自定义控件里添加如下脚本:
使用VS自带的ajax控件:
前台的自定义控件指定上面自定义的方法OnChanged:
如果不希望触发自定义控件后页面刷新,可使用ajax控件把需要因自定义控件触发变动其值的控件包含在内,UpdateMode指定为Conditional:
最后是后台给控件赋值的方法:
<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(); }效果图:选择行政区域的自定义控件后在其他表单元素控件中显示其值:
相关文章推荐
- Input表单值改变(非键盘直接输入)后触发事件
- jQuery给一个元素绑定事件前,一次点击会多次触发的问题所在
- 由页面脚本改变一个组件值所触发的事件
- checkbox:click事件触发span元素内容改变的方法
- jQuery解决input元素的blur事件和其他非表单元素的click事件冲突问题
- js实现默认或者触发一个事件选中元素内容的方法
- 当IE中只有一个文本框,并在文本框上点击回车时,表单的submit事件会触发
- 当一个表单中有多个按钮时,可以通过onclick()事件触发不同的action请求
- 父窗口jquery触发iframe按钮事件来改变父窗口元素值
- 开发日志:js当文本框输入非中文字符时,提示只能输入中文并将非中文字符清空【兼容IE、FF,适用于当文本框内容改变就立刻触发事件的其他功能性需求】
- 当用js动态的改变一个输入框中的值后,并不能触发它的onchange事件why?
- 如何设置一个style做一个属性触发去改变其他的属性值<style的相关内容>?
- 在一个类中的事件中 触发其他类的对象的事件
- textarea框内容的改变,触发其他事件的改变
- (笔记)鼠标移动到一个 元素上所触发的事件
- jQuery解决input元素的blur事件和其他非表单元素的click事件冲突问题
- “值改变”事件一个简单的动态触发方式
- vue—webapp 解决点击遮罩层会触发界面上其他元素的click事件问题
- 表单属性改变时触发事件(oninput,onpropertychange,onchange)