C#取动态生成的CheckBox
StringBuilder TitleOne = new StringBuilder();
TitleOne.Append("<input id=\"Checkbox1\" value=\"1\" text=\"123\" runat=\"server\" type=\"checkbox\"/>");
前台:
<asp:Panel ID="PanelPaperCreate" runat="server">
<div>
<% =TitleOne %>
</div>
</Panel>
请问在后台如何找到这个生成的CheckBox,如果选中如何找到Text值或Value值。
再加20分,请测试成功后贴出代码。功能:如果选中,取出text或value的值,如果没选中,不处理。谢谢各位! 展开
给你推荐两种方法,一种是向服务器容器控件里添加子控件(即向runat=server的控件的Controls里添加控件),第二种是就是你的这种拼接HTML的方法不过这种方法必须设置控件的name属性,然后在Request.Form["控件的name"]里获得控件的值,推荐使用第一种方法,更直观一些,第二种无法记录提交以后的状态,代码如下
第一种
后台
using System.Web.UI.HtmlControls;
protected void Page_Load(object sender, EventArgs e)
{
for (int i = 0; i < 4; i++)
{
HtmlInputCheckBox htmlInputCheckBox = new HtmlInputCheckBox();//这里用CheckBox也是一样的
htmlInputCheckBox.ID = "check" + i;
Container.Controls.Add(htmlInputCheckBox);
}
}
protected void Button1_Click(object sender, EventArgs e)
{
for (int i = 0; i < 4; i++)
{
Label1.Text += "<br/>" + (Container.FindControl("check" + i) as HtmlInputCheckBox).Checked.ToString();
}
}
前台
<form id="form1" runat="server">
<div id="Container" runat="server">
</div>
<asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />
<asp:Label ID="Label1" runat="server"></asp:Label>
</form>
第二种
后台
public string GetCheckBox()
{
return "<input name=\"Checkbox1\" type=\"checkbox\"/>";//这里必须设置name,Id没有用
}
protected void Button1_Click(object sender, EventArgs e)
{
if (Request.Form["Checkbox1"] == null)//如果Checkbox1为未选中状态Request.Form["Checkbox1"]值为null
{
Label1.Text += "<br/>Fasle";
}
else//如果Checkbox1为选中状态Request.Form["Checkbox1"]值为on
{
Label1.Text += "<br/>True";
}
}
前台
<form id="form1" runat="server">
<div>
<%=GetCheckBox() %>
</div>
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
<asp:Label ID="Label1" runat="server"></asp:Label>
</form>
在页面上用一个checkBox的服务器控件,但是将它隐藏了。设置ID为:checkF
用一个隐藏域ID为:hide。绑定你要取的值。
在JavaScript中添加函数:
当点击提交的时候调用checkF.click()。
这样就可以调用到后台去了,而且还可以得到hide的值。试试看吧。
可以去到该checkbox对象.
然后在去text就挺容易了.