读书人

能不能用后台的变量用在前台来用作a

发布时间: 2013-07-16 22:38:05 作者: rapoo

能不能用后台的变量,用在前台来用作asp.net控件的ID,怎么做????

 <%  if(checkflow!=null)
{ for(int i=1;i<= checkflow.FLOW_STEP_COUNT;i++)
{ %>
<tr>
<td>
审批流程步骤<% i.ToString(); %>
</td>
<td align="left">
<asp:DepartmentSelect ID="DepartmentSelect<% i.ToString(); %>" runat="server" Rows="10" Width="250px"
Height="200px" SelectionMode="Multiple">
<FirstListBox>
<StyleSheet Width="100px" />
</FirstListBox>
<SecondListBox>
<StyleSheet Width="100px" />
</SecondListBox>
</asp:DepartmentSelect>
</td>
</tr>
<% }}%>


这样子会报错,可是就像达到这样的效果,有没有人做过类似的
[解决办法]
protected int i = 1;

protected void Page_Load(object sender, EventArgs e) {
foreach (var c in Controls) {
if (c is Repeater) {
Repeater lst = (Repeater)c;
lst.ID = "Repeater" + i;
}
}
}


应该只能这样了。
[解决办法]
引用:
protected int i = 1;

protected void Page_Load(object sender, EventArgs e) {
foreach (var c in Controls) {
if (c is Repeater) {
Repeater lst = (Repeater)c;
lst.ID = "Repeater" + i;
}
}
}


应该只能这样了。

不过我不太清楚你为什么要对服务器控件的ID这样处理,这样处理其实就是动态创建服务器控件,用我上面的方式的话,你需要把循环逻辑也移动后台,然后动态增加那些服务器控件。
Repeater rpt = new Repeater();
rpt.ID = "Repeater1";

Page.Controls.Add(rpt);

[解决办法]
从我个人的经验来讲,动态创建服务器控件很少用到,而且相对来说会比较麻烦,大部分都是创建客户端的html代码,然后用js去操作比较多。
[解决办法]
可以把前台的控件,在后台通过HtmlGenericControl画到页面上:
HtmlGenericControl li = new HtmlGenericControl();//HtmlGenericControl可以为任意html控件
li.InnerHtml = "<A href='Login.aspx'>登录</A><A href='Register.aspx'>注册</A>";//""内是画到前台的元素
logData.Controls.Add((Control)li);//logData是前台带runat="server"的元素ID

[解决办法]
那你只能动态创建这个控件来完成注册

读书人网 >asp.net

热点推荐