如题:
一个datalist1嵌套了一个datalist2,
这两个datalist里面都绑定了checkbox,
现在的问题就是如何获取这两个datalist的checkbox的值。<asp:DataList ID="DataList1" runat="server" Width="769px" OnItemDataBound="DataList1_ItemDataBound">
<ItemTemplate>
<table width="99%" border="0" align="center" cellpadding="4" cellspacing="1" bgcolor="#999966">
<tr>
<td bgcolor="#fbfbff">
<asp:Label runat="server" ID="yj" Text='<%#Eval("id") %>' Visible="false"></asp:Label><asp:CheckBox ID="chk" runat="server" Text='<%# Eval("id") %>' /><%#Eval("sh_xiang") %>
</td>
</tr>
<tr>
<td align="left" bgcolor="#ffffff">
<asp:DataList ID="DataList2" runat="server" RepeatColumns="4" RepeatDirection="Horizontal" Width="100%">
<ItemTemplate>
<asp:CheckBox ID="chk0" runat="server" Text='<%# Eval("id") %>' /><%#Eval("sh_xiang") %>
</ItemTemplate>
</asp:DataList></td>
</tr>
</table>
</ItemTemplate>
</asp:DataList>
后台代码:
string strsql = "(";
CheckBox mychk = new CheckBox();
for (int i = 0; i < DataList1.Items.Count; i++)
{
mychk = (CheckBox)DataList1.Items[i].FindControl("chk");
// strsql = strsql + ((CheckBox)this.DataList1.Items[i].FindControl("chk")).Text.Trim() + ",";
if (mychk.Checked == true)//如果是=就全部显示出来,==就没有结果
{
strsql = strsql + ((CheckBox)this.DataList1.Items[i].FindControl("chk")).Text.Trim() + ",";
}
}
if (strsql == "(")
{
Response.Write("<script>alert('选择项不能为空!请选择要推荐的项!');history.go(-1);</script>");
}
else
{
strsql = strsql.Substring(0, strsql.Length - 1) + ")";
Response.Write(strsql);
}
yjbind();
一个datalist1嵌套了一个datalist2,
这两个datalist里面都绑定了checkbox,
现在的问题就是如何获取这两个datalist的checkbox的值。<asp:DataList ID="DataList1" runat="server" Width="769px" OnItemDataBound="DataList1_ItemDataBound">
<ItemTemplate>
<table width="99%" border="0" align="center" cellpadding="4" cellspacing="1" bgcolor="#999966">
<tr>
<td bgcolor="#fbfbff">
<asp:Label runat="server" ID="yj" Text='<%#Eval("id") %>' Visible="false"></asp:Label><asp:CheckBox ID="chk" runat="server" Text='<%# Eval("id") %>' /><%#Eval("sh_xiang") %>
</td>
</tr>
<tr>
<td align="left" bgcolor="#ffffff">
<asp:DataList ID="DataList2" runat="server" RepeatColumns="4" RepeatDirection="Horizontal" Width="100%">
<ItemTemplate>
<asp:CheckBox ID="chk0" runat="server" Text='<%# Eval("id") %>' /><%#Eval("sh_xiang") %>
</ItemTemplate>
</asp:DataList></td>
</tr>
</table>
</ItemTemplate>
</asp:DataList>
后台代码:
string strsql = "(";
CheckBox mychk = new CheckBox();
for (int i = 0; i < DataList1.Items.Count; i++)
{
mychk = (CheckBox)DataList1.Items[i].FindControl("chk");
// strsql = strsql + ((CheckBox)this.DataList1.Items[i].FindControl("chk")).Text.Trim() + ",";
if (mychk.Checked == true)//如果是=就全部显示出来,==就没有结果
{
strsql = strsql + ((CheckBox)this.DataList1.Items[i].FindControl("chk")).Text.Trim() + ",";
}
}
if (strsql == "(")
{
Response.Write("<script>alert('选择项不能为空!请选择要推荐的项!');history.go(-1);</script>");
}
else
{
strsql = strsql.Substring(0, strsql.Length - 1) + ")";
Response.Write(strsql);
}
yjbind();
foreach (DataListItem item in DataList1.Items)
{ //获取前台控件
CheckBox chkbox = item.FindControl("chk") as CheckBox;
if (chkbox == null || lblID== null)
{
continue;
}
if (chkbox.Checked)
{
Response.Write(chkbox.Text);}
}
CheckBox ch0 = (CheckBox)rp.FindControl("chk0");
//提示未将对象引用设置到对象的实例
foreach (DataListItem item in rp.Items)
{
string ckb = "";
if (ch0.Checked)
{
ckb = rp.DataKeys[item.ItemIndex].ToString();
Response.Write(ckb);
}
}
//前台
<asp:DataList ID="DataList1">
...
<asp:DataList ID="DataList2" runat="server" RepeatColumns="4" RepeatDirection="Horizontal" Width="100%" DataKeyField="id">
<ItemTemplate>
<asp:CheckBox ID="chk0" runat="server" Text='<%# Eval("id") %>' /><%#Eval("sh_xiang") %>
</ItemTemplate>
</asp:DataList>
...
</asp:DataList>
{ //获取前台控件
CheckBox chkbox = item.FindControl("chk") as CheckBox;
if (chkbox == null || lblID== null)
{
continue;
}
if (chkbox.Checked)
{
Response.Write(chkbox.Text);}
}
dataBinding事件中读到checkbox 然后看它是被否选中
我将checkbox的值加到了数据库后,字段呈现值是:1,3,4,5,6
现在我想修改这些checkbox,也就是说,将这些1,3,4,5,6分割成数组后和checkbox的id对应,如果相等就让他为选中状态,反之不选中。我的理解应该没错吧。可是不会写。请各位大侠指点迷津。
seleCheckBox=数据库中的字符串
数组= seleCheckBox.split(",");
for(int i=0;i<数组长度;i++)
{
for(int j=0;j<页面中的checkBox.length;j++)
{
if(数组[i].Equals(页面中的checkBox[j].text))
{
页面中的checkBox[j].checked=true;
}
}
}