求救:由语句创建的checkbox用FindControl()找不到啊!!! Dim chkSelected As HtmlControls.HtmlInputCheckBox 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Dim box As HtmlControls.HtmlInputCheckBox你改成c# 忘了说:这个chceckbox 是在一个Microsoft.Web.UI.WebControls.TreeView的text显示属性中的。也就是说其实是想实现权限树,将权限全部按照树型菜单那样排列,当选择了上一级的权限,那么它的叶子权限也全都可以自动选择了。 上面各位说的方法都找不到这个checkbox。救命啊!! 用遍历试试,看看这段代码能否有帮助private void PickUpInput(){ string strRet = ""; int intCell = 9; int intCount = DataGridBase_PO.Items.Count; for ( int i = 0; i<intCount; i++ ) { strRet += "|"; DataGridItem dgItem = DataGridBase_PO.Items[i]; foreach ( Control ctrl in dgItem.Cells[intCell].Controls ) { if ( ctrl is CheckBox ) { CheckBox cbx = ( CheckBox )ctrl; strRet += cbx.Checked.ToString(); } } //LabelBase_msg.Text = strRet; }} 还有一点,你这个最好在client端用javascript实现,这样界面不用刷新,否则写在.cs刷新比较讨厌的。<asp:CheckBox id="CB_checkAll" onclick="checkAll('CB_Checked' ,true )" runat="server" Text="Check All"></asp:CheckBox><asp:CheckBox id="CB_checkReverse" onclick="checkReverse('CB_Checked')" runat="server" Text="Reverse Click"></asp:CheckBox><script language=javascript>// CheckBox 全部选择 check allfunction cleckAll( sCheckObjId ,bCheckValue ){ var inputs = document.all.tags("input"); for (var i=0; i < inputs.length; i++) { if ( inputs[i].type == "checkbox" && inputs[i].id.match( sCheckObjId ) ) inputs[i].checked = bCheckValue; } }// CheckBox 反向选择 reverse checkfunction cleckReverse( sCheckObjId ){ var inputs = document.all.tags("input"); for (var i=0; i < inputs.length; i++) { if ( inputs[i].type == "checkbox" && inputs[i].id.match( sCheckObjId ) ) inputs[i].checked = !inputs[i].checked; } }</script> 还有一点,你这个最好在client端用javascript实现,这样界面不用刷新,否则写在.cs刷新比较讨厌的。<asp:CheckBox id="CB_checkAll" onclick="checkAll('CB_Checked' ,true )" runat="server" Text="Check All"></asp:CheckBox><asp:CheckBox id="CB_checkReverse" onclick="checkReverse('CB_Checked')" runat="server" Text="Reverse Click"></asp:CheckBox><script language=javascript>// CheckBox 全部选择 check allfunction cleckAll( sCheckObjId ,bCheckValue ){ var inputs = document.all.tags("input"); for (var i=0; i < inputs.length; i++) { if ( inputs[i].type == "checkbox" && inputs[i].id.match( sCheckObjId ) ) inputs[i].checked = bCheckValue; } }// CheckBox 反向选择 reverse checkfunction cleckReverse( sCheckObjId ){ var inputs = document.all.tags("input"); for (var i=0; i < inputs.length; i++) { if ( inputs[i].type == "checkbox" && inputs[i].id.match( sCheckObjId ) ) inputs[i].checked = !inputs[i].checked; } }</script> 我现在的做法是生成一棵树,Microsoft.Web.UI.WebControls.TreeView,然后在生成每一个结点的时候使用myNode.Text="<input type=checkbox runat=server id=test>";来生成一个checkbox,但是在fincontrol的时候找不到这个checkbox,不知道该怎么样才可以得到这个checkbox的checked属性啊,救命!! try to add a checkbox to Page like this:CheckBox chk = new CheckBox();chk.ID = Text1.Text;Page.Controls.Add(chk);then try Page.FindControl("ControlName"); 生成页面时:CheckBox cb = new CheckBox();cb.ID = "你起的名字";你要加CheckBox的对象.Controls.Add(cb);读的时候:Request.Form["你起的名字"] == "on"就是选中了,否则没有 动态生成的控件用ID恐怕无法使用,你直接使用控件名Dim box As HtmlControls.HtmlInputCheckBox然后findcontrol(box) 这个递归调用函数能够访问界面上所有的控件,如果你在IE的查看源文件中能考到你要访问的CheckBox的话,用这个函数肯定能找到protected void Button_a_clicked(){ VisitSubControls( this.Page );}private void VisitSubControls( Control parentCtrl ){ //你的处理逻辑 if ( !parentCtrl.HasControls() ) return; int i = 0; while ( i < parentCtrl.Controls.Count ) { VisitSubControls( parentCtrl.Controls[i] ); i ++; }} asp中可以很好的得到动态生成的东西的信息,asp.net是像delphi这些这样编程,但是反而更加难对动态生成的东西进行处理了。 你在.cs文件中用“"<input type=checkbox runat=server id=\""+ text1.text+"\">";”生成控件??这方法能生成控件吗?这成字符串值了不是控件!! 在html视图中用<input type=checkbox runat=server id=\""+ <%=text1.text%>+"\">;还差不多。 在.cs文件中只能用HtmlInputCheckBox hcb=new HtmlInputCheckBox();这样才能生成对象。 这样的方法是不能生成动态控件的。你可以看一下浏览时页面的源代码,会发现服务器控件会全部显示成html的tag形式,而你所谓的动态加的服务器控件显示的是原来的样子,<asp:textbox ...../>,是行不通的。我做动态加载控件的时候也碰到这种问题,我需要让控件动态加载并显示在规定的表格里,我最后的解决办法是,先动态加载TableCell,因为TableCell可以定位.代码TableCell tc=new TableCell(); TextBox tb=new TextBox(); tc.Width=Unit.Percentage(33); tc.Height=Unit.Pixel(133); tc.Controls.Add(tb); ........你可以看一下思路,希望有启发!! 我现在的做法是生成一棵树,Microsoft.Web.UI.WebControls.TreeView,然后在生成每一个结点的时候使用myNode.Text="<input type=checkbox runat=server id=test>";来生成一个checkbox,但是在fincontrol的时候找不到这个checkbox,不知道该怎么样才可以得到这个checkbox的checked属性啊,救命!!=======================myNode.Checked属性就是这样节点的checkbox的值啊。 visual studio 2008 网站重新发布后,原有数据被覆盖了,怎么办 Jquery插件autocomplete不是真正意义上的AJAX? Forms验证模式下,如何使某页不跳转到登录页面 parameter的问题。。 有没有Visual Studio 2005 中文正式版? 求一论坛需求! 如何让DataGrid每一行颜色都不同? 第归求树,请帮我debug,谢谢 SQL语句错误,请指点 自定义控件与Web 窗体用户控件的区别是什么? 谁帮我看看这里的错误??100分相送! 一个很奇怪的问题:为什么会锁住我的表?
你改成c#
这个chceckbox 是在一个Microsoft.Web.UI.WebControls.TreeView的text显示属性中的。
也就是说其实是想实现权限树,将权限全部按照树型菜单那样排列,当选择了上一级的权限,那么它的叶子权限也全都可以自动选择了。
private void PickUpInput()
{
string strRet = "";
int intCell = 9;
int intCount = DataGridBase_PO.Items.Count;
for ( int i = 0; i<intCount; i++ )
{
strRet += "|";
DataGridItem dgItem = DataGridBase_PO.Items[i];
foreach ( Control ctrl in dgItem.Cells[intCell].Controls )
{
if ( ctrl is CheckBox )
{
CheckBox cbx = ( CheckBox )ctrl;
strRet += cbx.Checked.ToString();
}
}
//LabelBase_msg.Text = strRet;
}}
<asp:CheckBox id="CB_checkAll" onclick="checkAll('CB_Checked' ,true )" runat="server" Text="Check All"></asp:CheckBox>
<asp:CheckBox id="CB_checkReverse" onclick="checkReverse('CB_Checked')" runat="server" Text="Reverse Click"></asp:CheckBox>
<script language=javascript>
// CheckBox 全部选择 check all
function cleckAll( sCheckObjId ,bCheckValue )
{
var inputs = document.all.tags("input");
for (var i=0; i < inputs.length; i++)
{
if ( inputs[i].type == "checkbox" && inputs[i].id.match( sCheckObjId ) )
inputs[i].checked = bCheckValue;
}
}
// CheckBox 反向选择 reverse check
function cleckReverse( sCheckObjId )
{
var inputs = document.all.tags("input");
for (var i=0; i < inputs.length; i++)
{
if ( inputs[i].type == "checkbox" && inputs[i].id.match( sCheckObjId ) )
inputs[i].checked = !inputs[i].checked;
}
}
</script>
<asp:CheckBox id="CB_checkAll" onclick="checkAll('CB_Checked' ,true )" runat="server" Text="Check All"></asp:CheckBox>
<asp:CheckBox id="CB_checkReverse" onclick="checkReverse('CB_Checked')" runat="server" Text="Reverse Click"></asp:CheckBox>
<script language=javascript>
// CheckBox 全部选择 check all
function cleckAll( sCheckObjId ,bCheckValue )
{
var inputs = document.all.tags("input");
for (var i=0; i < inputs.length; i++)
{
if ( inputs[i].type == "checkbox" && inputs[i].id.match( sCheckObjId ) )
inputs[i].checked = bCheckValue;
}
}
// CheckBox 反向选择 reverse check
function cleckReverse( sCheckObjId )
{
var inputs = document.all.tags("input");
for (var i=0; i < inputs.length; i++)
{
if ( inputs[i].type == "checkbox" && inputs[i].id.match( sCheckObjId ) )
inputs[i].checked = !inputs[i].checked;
}
}
</script>
myNode.Text="<input type=checkbox runat=server id=test>";
来生成一个checkbox,但是在fincontrol的时候找不到这个checkbox,不知道该怎么样才可以得到这个checkbox的checked属性啊,救命!!
CheckBox chk = new CheckBox();
chk.ID = Text1.Text;
Page.Controls.Add(chk);then try
Page.FindControl("ControlName");
CheckBox cb = new CheckBox();
cb.ID = "你起的名字";
你要加CheckBox的对象.Controls.Add(cb);读的时候:
Request.Form["你起的名字"] == "on"就是选中了,否则没有
Dim box As HtmlControls.HtmlInputCheckBox
然后findcontrol(box)
protected void Button_a_clicked()
{
VisitSubControls( this.Page );
}
private void VisitSubControls( Control parentCtrl )
{
//你的处理逻辑 if ( !parentCtrl.HasControls() ) return; int i = 0;
while ( i < parentCtrl.Controls.Count )
{
VisitSubControls( parentCtrl.Controls[i] );
i ++;
}
}
我做动态加载控件的时候也碰到这种问题,我需要让控件动态加载并显示在规定的表格里,我最后的解决办法是,先动态加载TableCell,因为TableCell可以定位.
代码TableCell tc=new TableCell();
TextBox tb=new TextBox();
tc.Width=Unit.Percentage(33);
tc.Height=Unit.Pixel(133);
tc.Controls.Add(tb);
........
你可以看一下思路,希望有启发!!
myNode.Text="<input type=checkbox runat=server id=test>";
来生成一个checkbox,但是在fincontrol的时候找不到这个checkbox,不知道该怎么样才可以得到这个checkbox的checked属性啊,救命!!
=======================myNode.Checked属性就是这样节点的checkbox的值啊。