不知哪里出错,老是得不到值,得到的结果是空。请大家帮忙解决一下,谢谢。
我要做的是:在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);
} }
麻烦大家帮忙,在线结分,谢谢。
}
我要做的是:在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页面中就不是这个名字了
foreach(CheckBox cb in chkRights)
if(cb.Checked)
{}
知道了吧
<asp:DataList ID="dlstModuleRight" runat="server" CellPadding="4" ForeColor="#333333" Width="645px">
<FooterStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />
<SelectedItemStyle BackColor="#C5BBAF" Font-Bold="True" ForeColor="#333333" />
<AlternatingItemStyle BackColor="White" />
<ItemStyle BackColor="#E3EAEB" />
<HeaderStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />
<ItemTemplate>
<div id="ModuleList">
<ul>
<li>模板名称:<asp:Label ID="lblModuleId" runat="server" Text='<%#DataBinder.Eval(Container.DataItem,"UBSModuleId")%>' Visible="false"></asp:Label><asp:Label runat="server" ID="lblModuleName" Text='<%#DataBinder.Eval(Container.DataItem,"UBSModuleName")%>'></asp:Label> 模板路径:<asp:label runat="server" ID="lblModulePath" Text='<%#DataBinder.Eval(Container.DataItem,"UBSModulePath")%>'></asp:label></li>
<li>权限设定:<asp:CheckBoxList id="chkRoleRight" RepeatDirection="Horizontal" runat="server" >
<asp:ListItem Text="阅读" Value="1"></asp:ListItem>
<asp:ListItem Text="下载" Value="2"></asp:ListItem>
<asp:ListItem Text="发布" Value="3"></asp:ListItem>
<asp:ListItem Text="修改" Value="4"></asp:ListItem>
<asp:ListItem Text="删除" Value="5"></asp:ListItem>
<asp:ListItem Text="打印" Value="6"></asp:ListItem>
<asp:ListItem Text="所有" Value="7"></asp:ListItem>
</asp:CheckBoxList></li>
</ul></div>
</ItemTemplate>
</asp:DataList>
在这里设断点调试跟踪一下
{
if(checkboxlist1.item[i].selected)
msg.text+=checkboslist.items[i].text;
}
if (chkRights.Items[j].Selected )
{
Response.Write(chkRights.Items[j].Text+"<br>");
}
页面回发之后 CheckBox 还保持选中状态迈?如果不是 !IsPostBack ,就有点诡异了