C#WEB开发中,在后台为前台页面根据需要去添加控件是很常见的操作。以添加checkbox 为例来分析这个操作的步骤。
首先前台页面中要有存放后台添加的控件,一般会用<asp:literal />这个标签(Lable标签也可以),所以先在页面中创建<asp:literal />。
后台首先要获取<asp:literal />的ID,一般情况下是Page.FindControl(控件ID) AS Literal ,但是当你用到模板页时,则这个就不能获取到特定控件(原因可以到MSDN上看一下),而是用
Page.Master.FindControl(ContentPlaceHolderID).FindControl(控件ID) AS Literal
其中ContentPlaceHolderID是引用模板页的ContentPlaceHolderID的值。
获取到载体控件的ID后,就可以在里写入checkbox 的html 了,具体写法根据自己的需求。
tempLiteral.Text = string.Format("<input type=checkbox id='flowPara_{0}' name='flowPara_{0}' value={2} {1} />", 参数0, 参数1,参数2);
参数还可以再加,比如显示时某个checkbox 是选定状态,但又不能被选择,则可以用下面的方法控制:
tempLiteral.Text = string.Format("<input type=checkbox id='flowPara_{0}' name='flowPara_{0}' οnclick='this.checked=true' value={2} {1} />", i - 5, "checked", "");
如果想在JS中全选或全否来操作后台添加的Checkbox , 也完全可以,JS全码如下:
<input type="checkbox" id="selectALL" name="selectALL" οnclick="javascript:checkAll(this)" runat="server" />全选
function checkAll(check){
var a = document.getElementsByTagName("input");
for (var i=0; i<a.length; i++)
{
if (a[i].type == "checkbox" && a[i].name.substring(0,9) == "flowPara_")
{
a[i].checked = !check.checked;
a[i].click();
}
}
}
用这种方式可以添加你所需要的控件,原理简单,操作也方便,比如根据条件显示图片啦,变色啦,太多种应用。