怎么获取datalist中的checkboxlist选中的值?
不知哪里出错,老是得不到值,得到的结果是空。请大家帮忙解决一下,谢谢。
我要做的是:在datalist外一个button后,获取到datalist中checkboxlist时里面选中的值,现在不行了。郁闷。
代码是这样写的:
protected void AddRight()
{
int roleId = Convert.ToInt32(Request.QueryString[ "RoleId "]);
for (int i = 0; i <= dlstModuleRight.Items.Count - 1; i++)
{
CheckBoxList chkRights = (CheckBoxList)dlstModuleRight.Items[i].FindControl( "chkRoleRight ");
//此句可以攻取ModuleId
Label lblId = (Label)dlstModuleRight.Items[i].FindControl( "lblModuleId ");
for(int j=0;j <=chkRights.Items.Count-1; j++)
{
if (chkRights.Items[j].Selected == true)
{
Response.Write(chkRights.Items[j].Text);
}
else
{
Response.Write(j);
}
}
麻烦大家帮忙,在线结分,谢谢。
}
[解决办法]
第一个常识问题..
是否判断回传
private void Page_Load(object sender, System.EventArgs e)
{
if (! IsPostBack )
{
//绑定数据
}
}
[解决办法]
这句话有问题
CheckBoxList chkRights = (CheckBoxList)dlstModuleRight.Items[i].FindControl( "chkRoleRight ");
明白你在后台给他们命了chkRoleRight这个名称
但是生成的aspx页面中就不是这个名字了
[解决办法]
你可以获得包含的控件,然后用。。Controls[0]。。这种方法来获得控件
[解决办法]
CheckBoxList chkRights = (CheckBoxList)dlstModuleRight.Items[i].FindControl( "chkRoleRight ");
foreach(CheckBox cb in chkRights)
if(cb.Checked)
{}
知道了吧
[解决办法]
单步调试一下
[解决办法]
if (chkRights.Items[j].Selected == true)
在这里设断点调试跟踪一下
[解决办法]
for(int i=0;i <checkboxlist1.items.count;i++)
{
if(checkboxlist1.item[i].selected)
msg.text+=checkboslist.items[i].text;
}
[解决办法]
lz关于checkboxlist1的代码没什么错,但是如果你是多行的多选框,要注意逻辑,这种写法总是会输出j值的,建议先不输出else部分调试
if (chkRights.Items[j].Selected )
{
Response.Write(chkRights.Items[j].Text+ " <br> ");
}
[解决办法]
mark