Repeater和控件的runat="server"分析
来源:互联网 发布:美国驻港总领馆 知乎 编辑:程序博客网 时间:2024/06/05 05:35
一、功能说明:
勾选复选框后,对是否输入了数量及其格式进行验证。
原始设计是多选,在后台进行验证;现在需改为单选,在前台进行验证。
二、原始代码:
HTML代码:(该部分代码置于repeater控件中)
<asp:Repeaterrunat="server" ID="ProductPlanList">
C#代码:
后台代码中,需经过执行验证然后为变量“str”置值,有其他地方用到该值。所以后台仍需保留验证。
三、思路分析:
1.该功能要将多选改为单选,所以得使用type=”radio”的控件,并且不能设置runat=”server”,因为一旦设置了该属性,控件的name属性会被服务器自动改变成不同的值,而单选要求在一组相同的name值中才能实现只选择一个。
2.该功能要实现的是在前后台同时加验证,后台需要从前台传值,即如果勾选了单选按钮需要把本行控件RadioButton的Checked属性传递给后台,但是并不能给控件RadioButton设置属性runat=”server”。所以需在前台添加一个隐藏域HiddenField控件,设置其属性runat=”server”,通过JS判断,当某行的控件RadioButton为Checked时,给HiddenField控件的Value属性赋值,并将该值传递给后台。
四、功能实现:
HTML代码:
JS代码:
C#代码:
五、总结:
1.原理:运行在服务器的控件,每个控件被服务器解析出来都必须有唯一标识id,id是其唯一区分标识。
2.置于Repeater中的控件,如果设置了runat=”server”属性,被服务器解析出来后,该控件的name和id都会改变。
如果不设置runat=”server”属性,服务器则会解析出来一组控件,该组控件具有同一个name和id。比如单选按钮这种情况,应该是一组控件,在该组控件中,只能选择一个。
3.置于Repeater外的控件,因为没有循环,只解析一次,所以无论设不设置runat=”server”属性,其name和id都不会被改变。
4.如果想要获取Repeater中的某个具有runat=”server”属性的控件,可以使用控件类型,比如type等,这些解析后不会被改变的属性。如$("input[type='radio']")。
或者通过查看解析后的html源代码,找到解析规律,然后再拼接字符串来计算name和id。如某控件<asp:TextBoxID="txtNum" runat="server" Class="form-text"value=""></asp:TextBox>,
解析后id="ProductPlanList_txtNum_0",ProductPlanList是其外侧Repeater控件的ID,最后一个字符0是其tr行号。
- Repeater和控件的runat="server"分析
- HtmlControl 和 服务器端控件 和 运行在服务器端的htmlcontrol (runat=server) 的区别
- web服务控件和form runat=server 表单的关系
- 在Repeater中添加runat="server"的div,并控制其是否显示
- 在Repeater中添加runat="server"的div,并控制其是否显示
- 加了 runat="server"属性的select控件的value和text(实际值和显示文本)
- C# 含runat="server"属性 select控件的value和text赋值(实际值和显示文本)
- input runat= server和asp:button的区别
- asp.net为前台Runat="server"控件设置样式和添加属性
- 类型“TextBox”的控件“textBox1”必须放在具有 runat=server 的窗体标记内
- 类型“TextBox”的控件“email”必须放在具有 runat=server 的窗体标记内。
- "控件必须放在具有 runat=server 的窗体标记内"错误的解决方法
- 错误:类型“GridView”的控件必须放在具有 runat=server 的窗体标记内
- /"控件必须放在具有 runat=server 的窗体标记内/"错误的解决方法
- 控件必须放在具有 runat=server 的窗体标记内错误的解决方法
- 控件必须放在具有 runat=server 的窗体标记内"错误的解决方法
- javascript访问加runat="server" 的Html控件的方法
- 类型“GridView”的控件“ctl00_ContentPlaceHolderMain_gvSelectInfo”必须放在具有 runat=server 的窗体标记内。
- Cordova下android与javascript的交互
- 笔/面试问题集锦
- Android Service两种启动方式
- 最大团概念+算法实现+例题
- 利用canvas+Chart.js实现动态折线图
- Repeater和控件的runat="server"分析
- JavaScript中的this(什么是调用栈和调用位置)
- 关于指针的三个容易弄混淆的概念及发散~~~
- 重置linux密码的方法(仅供参考)
- document.all用法
- Java数组-冒泡排序
- unity 抛物线 效果演示
- HDU1671-Phone List
- Jess学习基础(二)