repeater 控件中的checkboxlist 不显示

一刀封喉 2014-09-08 04:48:49
话不多说,直奔正题
如图是想要的效果:



代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Configuration;
using System.Data;
using System.Data.SqlClient;

public partial class newadmin_test4 : System.Web.UI.Page
{
private string _connstring = WebConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
get_lv1_data();
}
}

protected void get_lv1_data()
{
SqlConnection con = new SqlConnection(_connstring);
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = "select * from pro_category where pid=@pid order by shunxu";
cmd.Parameters.AddWithValue("@pid", 0);

SqlDataAdapter sda = new SqlDataAdapter(cmd);
DataSet dst = new DataSet();
using (sda)
{
sda.Fill(dst);
}

lv1.DataSource = dst;
lv1.DataBind();
}
public DataSet lv2data(object lv1id)
{
SqlConnection con = new SqlConnection(_connstring);
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = "select * from pro_category where pid=@pid order by shunxu";
cmd.Parameters.AddWithValue("@pid", lv1id);

SqlDataAdapter sda = new SqlDataAdapter(cmd);
DataSet dst = new DataSet();
using (con)
{
con.Open();
sda.Fill(dst);

}
return dst;

}
public DataSet lv3data(object lv2id)
{
SqlConnection con = new SqlConnection(_connstring);
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = "select * from pro_category where pid=@pid order by shunxu";
cmd.Parameters.AddWithValue("@pid", lv2id);

SqlDataAdapter sda = new SqlDataAdapter(cmd);
DataSet dst = new DataSet();
using (con)
{
con.Open();
sda.Fill(dst);

}
return dst;

}


}



前台页面:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="test4.aspx.cs" Inherits="newadmin_test4" %>

<html lang="en">
<head>
<meta charset="utf-8">
<title>sf</title>

</head>
<body>
<form id="form1" runat="server">
<ul>
<asp:Repeater ID="lv1" runat="server">
<ItemTemplate>
<li>
<div class="div_lv1"><span class="label_lv1"><%#Eval("categoryname") %>(<%#Eval("shunxu") %>)</span><br class="clear" /></div>
<ul class="ul_lv2">
<asp:Repeater ID="lv2" runat="server" DataSource='<%# lv2data(Eval("id")) %>'>
<ItemTemplate>
<li>
<div class="div_lv2"><span class="label_lv2"><%#Eval("categoryname") %>(<%#Eval("shunxu") %>)</span><br class="clear" />
<ul class="ul_lv3">
<asp:Repeater ID="lv3" runat="server" DataSource='<%# lv3data(Eval("id")) %>' >

<ItemTemplate>


<asp:CheckBoxList ID="CheckBoxList1" runat="server" DataTextField='<%#Eval("categoryname") %>' DataValueField='<%#Eval("id") %>'> </asp:CheckBoxList>


</ItemTemplate>
</asp:Repeater>

</ul>
</div><br class="clear" />
</li>

</ItemTemplate>

</asp:Repeater>

</ul>

</li>

<br class="clear" />
</ItemTemplate>
</asp:Repeater>
</ul>


</form>
</body>
</html>
...全文
160 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
你还是用ztree吧: http://www.ztree.me/v3/main.php#_zTreeInfo 先解决问题,然后在讨论问题。
一刀封喉 2014-09-09
  • 打赏
  • 举报
回复
大神何在? 都说.net 水平低,其实.net 入门容易,精通也很难,像我们这种没时间上专业培训课的遇到问题缺乏交流的渠道,csdn 搞个悬赏就好了
一刀封喉 2014-09-09
  • 打赏
  • 举报
回复
如果把最里层 checkboxlist 换成 checkbox ,那就没问题了,但是 checkbox 无法绑定 2个数据,1个id,1个name,二者缺一不可,否则 下一步取值会遇到问题
myhope88 2014-09-09
  • 打赏
  • 举报
回复
你这样设计感觉也不太对呀
叫我 Teacher 周 2014-09-09
  • 打赏
  • 举报
回复
如果你是嵌套在控件里的话,你需要用ItemBound事件,然后再去用FindControl找到你的Checkbox,才去绑定
sy401042879 2014-09-09
  • 打赏
  • 举报
回复
引用 4 楼 yidaofenghou 的回复:
[quote=引用 3 楼 touzilk 的回复:] http://bbs.csdn.net/topics/390880208这是你的帖子?你换个思路啊,老这种死抠怎么行
这是最容易实现的了,但是代码哪里有点问题[/quote] 你用了3个Repeater,前台第二,第三个Repeater数据源绑定,那样写可能是有问题的(具体我没测试),而且我个人观点不赞成那样嵌套。你这个其实很简单,我给你个思路吧。 1:数据库3个相同的表查询数据,获取数据源

select 需要绑定的字段... from pro_category t1 inner join pro_category t2 on t1.id=t2.pid inner join pro_category t3 on t2.id=t3.pid where t1.pid=0
2:绑定一个Repeater即可。 这样岂不是更舒服。不用写3遍后台绑定的代码,一个绑定代码即可。
  • 打赏
  • 举报
回复
或者把chekcboxList换成 <asp:CheckBox ID="CheckBox1" runat="server" Text='<%#Eval("categoryname") %>' Value='<%#Eval("id") %>'></asp:CheckBox>
  • 打赏
  • 举报
回复
你用了
引用 6 楼 yidaofenghou 的回复:
如果把最里层 checkboxlist 换成 checkbox ,那就没问题了,但是 checkbox 无法绑定 2个数据,1个id,1个name,二者缺一不可,否则 下一步取值会遇到问题
你用了checkboxlist的数据绑定方式,它本身就会像repeater那样,循环数据源,产生多个checkbox的 所以要把<asp:Repeater ID="lv3" 这个去掉,把它的数据源直接绑到checkboxlist
叫我 Teacher 周 2014-09-09
  • 打赏
  • 举报
回复
你缺一个 DataValueField和DataTextField
一刀封喉 2014-09-09
  • 打赏
  • 举报
回复
哎!!!大神呢
一刀封喉 2014-09-08
  • 打赏
  • 举报
回复
引用 3 楼 touzilk 的回复:
http://bbs.csdn.net/topics/390880208这是你的帖子?你换个思路啊,老这种死抠怎么行
这是最容易实现的了,但是代码哪里有点问题
手可摘星辰 2014-09-08
  • 打赏
  • 举报
回复
http://bbs.csdn.net/topics/390880208这是你的帖子?你换个思路啊,老这种死抠怎么行
手可摘星辰 2014-09-08
  • 打赏
  • 举报
回复
你这个用repeater有点累吧,要是7、8级你不就废了
一刀封喉 2014-09-08
  • 打赏
  • 举报
回复
不好意思,没打完,手一抖发布了 以上代码达不到我要的效果,但是又检查不出来哪的问题,请指教

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧