Repeater和控件的runat="server"分析
2016-09-20 16:15
357 查看
一、功能说明:
勾选复选框后,对是否输入了数量及其格式进行验证。
原始设计是多选,在后台进行验证;现在需改为单选,在前台进行验证。
二、原始代码:
HTML代码:(该部分代码置于repeater控件中)
<asp:Repeater
runat="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:TextBox
ID="txtNum"
runat="server" Class="form-text"
value=""></asp:TextBox>,
解析后id="ProductPlanList_txtNum_0",ProductPlanList是其外侧Repeater控件的ID,最后一个字符0是其tr行号。
勾选复选框后,对是否输入了数量及其格式进行验证。
原始设计是多选,在后台进行验证;现在需改为单选,在前台进行验证。
二、原始代码:
HTML代码:(该部分代码置于repeater控件中)
<asp:Repeater
runat="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:TextBox
ID="txtNum"
runat="server" Class="form-text"
value=""></asp:TextBox>,
解析后id="ProductPlanList_txtNum_0",ProductPlanList是其外侧Repeater控件的ID,最后一个字符0是其tr行号。
相关文章推荐
- 在Repeater中添加runat="server"的div,并控制其是否显示
- 加了 runat="server"属性的select控件的value和text(实际值和显示文本)
- 在Repeater中添加runat="server"的div,并控制
- 【ZT】asp.NET去掉form的runat="server"照样使用服务器控件,包括表单的服务器控件
- javascript访问加runat="server" 的Html控件的方法
- 不使用ASP.NET服务器端控件(包括form表单不加runat="server")来触发.cs里的事件(方法),(适用于有代码洁癖者)。
- 服务端控件绑定后台变量值无效runat="Server" <%= **** %>
- 解决ASPX页面中WEB控件必须在含有RUNAT="SERVER"中的FORM表单中
- 客户端控件添加runat="server"无回发事件
- asp.NET去掉form的runat="server"照样使用服务器控件,包括表单的服务器控件
- javascript访问加runat="server" 的Html控件的方法
- 排除“使用主题 css 文件要求页上有标头控件。(例如 <head runat="server" />)”错误
- 在Repeater中添加runat="server"的div,并控制其是否显示
- ASP.NET 2.0服务器控件必须放具有runat="server"的窗体标记内
- asp.net为前台Runat="server"控件设置样式和添加属性
- "控件必须放在具有 runat=server 的窗体标记内"错误的解决方法
- 控件必须放在具有 runat=server 的窗体标记内"错误的解决方法
- JavaScript 获取runat server控件的控制权(点击Button触发Textbox和Dropdownlist联动为例)
- <form id="form1" runat="server">小记
- input runat server 控件 先通过onclick通过验证客户端验证,然后在执行服务端方法onserverclick 的