Repeater控件如何实现无限等级分类

鸿与黑 2013-05-18 11:32:45


如图所示,有没有什么案例,在线等,谢谢各位
...全文
277 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
鸿与黑 2013-05-29
  • 打赏
  • 举报
回复
白云任去留 2013-05-28
  • 打赏
  • 举报
回复
  • 打赏
  • 举报
回复
引用 2 楼 liuchaolin 的回复:
http://fineui.com/demo/#/demo/grid/grid_simulate_tree.aspx
收藏了
鸿与黑 2013-05-28
  • 打赏
  • 举报
回复
引用 17 楼 jss122414092 的回复:
[quote=引用 16 楼 xuhongfei111 的回复:] [quote=引用 15 楼 jss122414092 的回复:] [quote=引用 14 楼 xuhongfei111 的回复:] 结果是“未将对象引用到实例中去” 哪儿出错了? [/code]帮助类,其实只调用了数据库链接和DrSelect
[/quote] 你没打开数据库链接,,当然查不到,,你调用
/// <summary>
    /// 打开链接
    /// </summary>
    public void ConnectionOpen()
    {
        con.MyConStr = (string)Application["ConnectionString"];
        if (con.DBconn() == null)
        {
            Response.End();
        }
    }
这个方法[/quote] 我连了数据库的啊? 这句话应该放哪儿?[/quote]当然是放到后置代码里,不是放到帮助类[/quote] 加个QQ吧,我的是1240661287
jss122414092 2013-05-28
  • 打赏
  • 举报
回复
引用 16 楼 xuhongfei111 的回复:
[quote=引用 15 楼 jss122414092 的回复:] [quote=引用 14 楼 xuhongfei111 的回复:] 结果是“未将对象引用到实例中去” 哪儿出错了? [/code]帮助类,其实只调用了数据库链接和DrSelect
[/quote] 你没打开数据库链接,,当然查不到,,你调用
/// <summary>
    /// 打开链接
    /// </summary>
    public void ConnectionOpen()
    {
        con.MyConStr = (string)Application["ConnectionString"];
        if (con.DBconn() == null)
        {
            Response.End();
        }
    }
这个方法[/quote] 我连了数据库的啊? 这句话应该放哪儿?[/quote]当然是放到后置代码里,不是放到帮助类
鸿与黑 2013-05-28
  • 打赏
  • 举报
回复
引用 20 楼 fangxuan 的回复:
这个貌似是repeater实现的
这个是我想要的,已经解决了!!!
jss122414092 2013-05-25
  • 打赏
  • 举报
回复
引用 14 楼 xuhongfei111 的回复:
结果是“未将对象引用到实例中去” 哪儿出错了? [/code]帮助类,其实只调用了数据库链接和DrSelect
[/quote] 你没打开数据库链接,,当然查不到,,你调用
/// <summary>
    /// 打开链接
    /// </summary>
    public void ConnectionOpen()
    {
        con.MyConStr = (string)Application["ConnectionString"];
        if (con.DBconn() == null)
        {
            Response.End();
        }
    }
这个方法
鸿与黑 2013-05-25
  • 打赏
  • 举报
回复
引用 15 楼 jss122414092 的回复:
[quote=引用 14 楼 xuhongfei111 的回复:] 结果是“未将对象引用到实例中去” 哪儿出错了? [/code]帮助类,其实只调用了数据库链接和DrSelect
[/quote] 你没打开数据库链接,,当然查不到,,你调用
/// <summary>
    /// 打开链接
    /// </summary>
    public void ConnectionOpen()
    {
        con.MyConStr = (string)Application["ConnectionString"];
        if (con.DBconn() == null)
        {
            Response.End();
        }
    }
这个方法[/quote] 我连了数据库的啊? 这句话应该放哪儿?
鸿与黑 2013-05-24
  • 打赏
  • 举报
回复
结果是“未将对象引用到实例中去” 哪儿出错了? [/code]帮助类,其实只调用了数据库链接和DrSelect[/quote]
jss122414092 2013-05-21
  • 打赏
  • 举报
回复

using System;
using System.Data;
using System.Data.OleDb;

namespace MingTa.include
{
    /// <summary>
    ///OperateDB 的摘要说明
    /// </summary>

    public class OperateDB
    {
        private static string strConn;
        private string strError = null;
        private int intCount = 0;
        private OleDbConnection conn;

        //构造函数
        public OperateDB()
        {
            //
            // TODO: 在此处添加构造函数逻辑
            //
            strConn = "Provider = Sqloledb; User ID = user; Password = pass; Initial Catalog = database; Data Source = localhost";
        }

        //连接字符串
        /// <summary>
        /// 获取连接字符串
        /// </summary>
        public string MyConStr
        {
            get { return strConn; }
            set { strConn = value; }
        }

        public OleDbConnection DBconn()
        {
            try
            {
                conn = new OleDbConnection(strConn);
                conn.Open();
                return conn;
            }
            catch (Exception)
            {
                throw;
                return null;
            }
        }
        /// <summary>
        /// 公开属性ErrorMessage,返回错误信息
        /// </summary>
        public string ErrorMessage
        {
            get
            {
                return strError;
            }
        }

        /// <summary>
        /// 根据查询语句从数据库检索数据
        /// </summary>
        /// <param name="strSelect">查询语句</param>
        /// <param name="OleDbConn">数据库连接</param>
        /// <returns>有数据则返回DataSet对象,否则返回null</returns>
        public DataSet DsSelect(string selectString, OleDbConnection sqlConn)
        {
            strError = "";
            try
            {
                //若数据库连接的当前状态是关闭的,则打开连接
                if (conn.State == ConnectionState.Closed)
                {
                    conn.Open();
                }
                OleDbDataAdapter myOleDbDataAdapter = new OleDbDataAdapter();
                OleDbCommand selectCommand = new OleDbCommand(selectString, conn);
                selectCommand.CommandType = CommandType.Text;
                myOleDbDataAdapter.SelectCommand = selectCommand;
                DataSet myDS = new DataSet();
                myOleDbDataAdapter.Fill(myDS);
                return myDS;
            }
            catch (Exception e)
            {
                strError = "数据检索失败:" + e.Message;
                return null;
            }
        }

        /// <summary>
        /// 根据查询语句从数据库检索数据
        /// </summary>
        /// <param name="strSelect">查询语句</param>
        /// <param name="OleDbConn">数据库连接</param>
        /// <returns>有数据则返回OleDbDataReader对象,否则返回null</returns>
        public OleDbDataReader DrSelect(string selectString, OleDbConnection sqlConn)
        {
            strError = "";
            try
            {
                //若数据库连接的当前状态是关闭的,则打开连接
                if (conn.State == ConnectionState.Closed)
                {
                    conn.Open();
                }
                OleDbDataAdapter myOleDbDataAdapter = new OleDbDataAdapter();
                OleDbCommand selectCommand = new OleDbCommand(selectString, conn);
                selectCommand.CommandType = CommandType.Text;
                OleDbDataReader myDr = selectCommand.ExecuteReader();
                return myDr;
            }
            catch (Exception e)
            {
                strError = "数据检索失败:" + e.Message;
                return null;
            }
        }
        /// <summary>
        /// 更新数据库
        /// </summary>
        /// <param name="UpdateString">Update OleDb语句</param>
        /// <param name="OleDbConn">数据库连接</param>
        /// <returns>更新成功返回true</returns>
        public bool Update(string updateString, OleDbConnection oleDbConn)
        {
            return udiDataBase(updateString, oleDbConn);
        }
        /// <summary>
        /// 从数据库中删除数据
        /// </summary>
        /// <param name="DeleteString">Delete OleDb语句</param>
        /// <param name="OleDbConn">数据库连接</param>
        /// <returns>删除成功返回true</returns>
        public bool Delete(string deleteString, OleDbConnection oleDbConn)
        {
            return udiDataBase(deleteString, oleDbConn);
        }
        /// <summary>
        /// 把数据插入数据库
        /// </summary>
        /// <param name="InsertString">Insert OleDb语句</param>
        /// <param name="OleDbConn">数据库连接</param>
        /// <returns>插入成功返回true</returns>
        public bool Insert(string insertString, OleDbConnection oleDbConn)
        {
            return udiDataBase(insertString, oleDbConn);
        }
        /// <summary>
        /// 根据OleDb语句更新数据库
        /// </summary>
        /// <param name="UDIString">更新语句</param>
        /// <param name="OleDbConn">数据库连接</param>
        /// <returns>更新成功则返回true</returns>
        public bool udiDataBase(string udiString, OleDbConnection oleDbConn)
        {
            strError = "";
            try
            {
                if (conn.State == ConnectionState.Closed)
                {
                    conn.Open();
                }
                OleDbCommand cmd = new OleDbCommand(udiString, conn);
                cmd.CommandType = CommandType.Text;
                intCount = cmd.ExecuteNonQuery();
                return !(intCount < 1);
            }
            catch (Exception e)
            {
                strError = "更新数据库失败:" + e.Message;
                return false;
            }
        }

        public void Close()
        {
            try
            {
                if (conn.State != ConnectionState.Closed)
                {
                   conn.Close();
                }
            }
            catch (Exception e)
            {
                strError = "数据关闭失败:" + e.Message;
            }
            finally
            {
                if (conn.State != ConnectionState.Closed)
                {
                    conn.Close();
                }
            }
        }
    }
}
帮助类,其实只调用了数据库链接和DrSelect
  • 打赏
  • 举报
回复
用SQL2005以上的CTE递归写个存储过程或者自定义函数,repeater直接绑定 或 repeater只绑定第一级,程序中写个递归方法输出下层
鸿与黑 2013-05-21
  • 打赏
  • 举报
回复
引用 6 楼 jss122414092 的回复:

/// <summary>
    /// 调用改方法
    /// </summary>
    /// <param name="fatherId"></param>
    private void Loadrpcolumn(string fatherId)
    {
        columnstring = "";
        string sql = "select * from info_class where fatherId=" + fatherId + " order by sortnum ,id ";
        OleDbDataReader dr = con.DrSelect(sql, null);
        while (dr.Read())
        {
            columnstring += "<tr class='list' onmouseover=\"this.className='rowcolor_over'\" onmouseout=\"this.className='rowcolor_out'\">";
            columnstring += "<td><input name='jssck' onclick='plchecked_f(this)' value='" + dr["id"].ToString() + "' type='checkbox'></td>";
            columnstring += "</tr>";
            Loadrpcolumn(dr["id"].ToString(), "1");
        }
        dr.Close();
    }
    /// <summary>
    /// 递归无限分类(info)
    /// </summary>
    /// <param name="fatherId"></param>
    /// <param name="num"></param>
    private void Loadrpcolumn(string fatherId, string num)
    {
        string sql = "select * from info_class where fatherId=" + fatherId + " order by sortnum ,id ";
        OleDbDataReader dr = con.DrSelect(sql, null);
        while (dr.Read())
        {
            string kg = "";
            for (int i = 0; i < Convert.ToInt32(num); i++)
            {
                kg += "  ";
            }
            columnstring += "<tr class='list' onmouseover=\"this.className='rowcolor_over'\" onmouseout=\"this.className='rowcolor_out'\">";
            columnstring += "<td><input name='jssck' onclick='plchecked_f(this)' value='" + dr["id"].ToString() + "' type='checkbox'></td>";
            columnstring += "</tr>";
            Loadrpcolumn(dr["id"].ToString(), dr["classify"].ToString());
        }
        dr.Close();
    }
现在看起来 还复杂不
SqlHelper类能给我看一下吗?
风2013 2013-05-20
  • 打赏
  • 举报
回复
Repeater控件实现不了无限等级分类 只能通过其他的方式去实现了 后台拼接html 或者 jq拼接html都行 三楼的方法代码看起是多了点 但肯定可以实现你需要的 用jquery的jquery.jqzoom-core-min.js 这个js去实现的话 代码层面上会相对减少很多的
joyhen 2013-05-20
  • 打赏
  • 举报
回复
这个直接用样式表+jq就可以实现了,显示用样式表处理(当然要判断了),折叠用jq去处理
jss122414092 2013-05-20
  • 打赏
  • 举报
回复
输出来就是这样的效果
jss122414092 2013-05-20
  • 打赏
  • 举报
回复

/// <summary>
    /// 调用改方法
    /// </summary>
    /// <param name="fatherId"></param>
    private void Loadrpcolumn(string fatherId)
    {
        columnstring = "";
        string sql = "select * from info_class where fatherId=" + fatherId + " order by sortnum ,id ";
        OleDbDataReader dr = con.DrSelect(sql, null);
        while (dr.Read())
        {
            columnstring += "<tr class='list' onmouseover=\"this.className='rowcolor_over'\" onmouseout=\"this.className='rowcolor_out'\">";
            columnstring += "<td><input name='jssck' onclick='plchecked_f(this)' value='" + dr["id"].ToString() + "' type='checkbox'></td>";
            columnstring += "</tr>";
            Loadrpcolumn(dr["id"].ToString(), "1");
        }
        dr.Close();
    }
    /// <summary>
    /// 递归无限分类(info)
    /// </summary>
    /// <param name="fatherId"></param>
    /// <param name="num"></param>
    private void Loadrpcolumn(string fatherId, string num)
    {
        string sql = "select * from info_class where fatherId=" + fatherId + " order by sortnum ,id ";
        OleDbDataReader dr = con.DrSelect(sql, null);
        while (dr.Read())
        {
            string kg = "";
            for (int i = 0; i < Convert.ToInt32(num); i++)
            {
                kg += "  ";
            }
            columnstring += "<tr class='list' onmouseover=\"this.className='rowcolor_over'\" onmouseout=\"this.className='rowcolor_out'\">";
            columnstring += "<td><input name='jssck' onclick='plchecked_f(this)' value='" + dr["id"].ToString() + "' type='checkbox'></td>";
            columnstring += "</tr>";
            Loadrpcolumn(dr["id"].ToString(), dr["classify"].ToString());
        }
        dr.Close();
    }
现在看起来 还复杂不
jss122414092 2013-05-20
  • 打赏
  • 举报
回复
不复杂啊,亲,你看好多代码只是前台页面的html代码而已
鸿与黑 2013-05-20
  • 打赏
  • 举报
回复
引用 3 楼 jss122414092 的回复:
Repeater 无法做级联的

/// <summary>
    /// 调用改方法
    /// </summary>
    /// <param name="fatherId"></param>
    private void Loadrpcolumn(string fatherId)
    {
        columnstring = "";
        string sql = "select * from info_class where fatherId=" + fatherId + " order by sortnum ,id ";
        OleDbDataReader dr = con.DrSelect(sql, null);
        while (dr.Read())
        {
            columnstring += "<tr class='list' onmouseover=\"this.className='rowcolor_over'\" onmouseout=\"this.className='rowcolor_out'\">";
            columnstring += "<td><input name='jssck' onclick='plchecked_f(this)' value='" + dr["id"].ToString() + "' type='checkbox'></td>";
            columnstring += "<td>" + dr["id"].ToString() + "</td>";
            columnstring += "<td><a href='columns_edit.aspx?cmd=edit&id=" + dr["id"].ToString() + "'>" + dr["name"].ToString() + " " + (dr["pic"] as string != null && dr["pic"] as string != "" ? "<img src='images/image.gif' align='absmiddle' alt='此信息上传了图片' /> " : "") + "</td>";
            columnstring += "<td>" + dr["template"].ToString() + "</td>";
            columnstring += "<td>" + (dr["users"] as string == null ? " " : dr["users"].ToString()) + "</td>";
            columnstring += "<td>" + DateTime.Parse(dr["creationtime"].ToString()).ToString("yyyy-MM-dd") + "</td>";
            columnstring += "<td>" + (dr["typestate"].ToString() == "1" ? "显示" : "<font color='#FF6600'>隐藏</font>") + "</td>";
            columnstring += "<td><a class='nyroModal' style=\"cursor:pointer\" onclick=\"fileimgload('info_class','pic','" + dr["id"].ToString() + "')\">" + (dr["pic"] as string != null && dr["pic"] as string != "" ? "<font color='#FF6600'>有</font>" : "无") + "</a></td>";
            columnstring += "<td><a href='columns_edit.aspx?cmd=edit&id=" + dr["id"].ToString() + "'>编辑</a></td>";
            columnstring += "</tr>";
            Loadrpcolumn(dr["id"].ToString(), "1");
        }
        dr.Close();
    }
    /// <summary>
    /// 递归无限分类(info)
    /// </summary>
    /// <param name="fatherId"></param>
    /// <param name="num"></param>
    private void Loadrpcolumn(string fatherId, string num)
    {
        string sql = "select * from info_class where fatherId=" + fatherId + " order by sortnum ,id ";
        OleDbDataReader dr = con.DrSelect(sql, null);
        while (dr.Read())
        {
            string kg = "";
            for (int i = 0; i < Convert.ToInt32(num); i++)
            {
                kg += "  ";
            }
            columnstring += "<tr class='list' onmouseover=\"this.className='rowcolor_over'\" onmouseout=\"this.className='rowcolor_out'\">";
            columnstring += "<td><input name='jssck' onclick='plchecked_f(this)' value='" + dr["id"].ToString() + "' type='checkbox'></td>";
            columnstring += "<td>" + dr["id"].ToString() + "</td>";
            columnstring += "<td>" + kg + "﹂<a href='columns_edit.aspx?cmd=edit&id=" + dr["id"].ToString() + "'>" + dr["name"].ToString() + " " + (dr["pic"] as string != null && dr["pic"] as string != "" ? "<img src='images/image.gif' align='absmiddle' alt='此信息上传了图片' /> " : "") + "</td>";
            columnstring += "<td>" + dr["template"].ToString() + "</td>";
            columnstring += "<td>" + (dr["users"] as string == null ? " " : dr["users"].ToString()) + "</td>";
            columnstring += "<td>" + DateTime.Parse(dr["creationtime"].ToString()).ToString("yyyy-MM-dd") + "</td>";
            columnstring += "<td>" + (dr["typestate"].ToString() == "1" ? "显示" : "<font color='#FF6600'>隐藏</font>") + "</td>";
            columnstring += "<td><a class='nyroModal' style=\"cursor:pointer\" onclick=\"fileimgload('info_class','pic','" + dr["id"].ToString() + "')\">" + (dr["pic"] as string != null && dr["pic"] as string != "" ? "<font color='#FF6600'>有</font>" : "无") + "</a></td>";
            columnstring += "<td><a href='columns_edit.aspx?cmd=edit&id=" + dr["id"].ToString() + "'>编辑</a></td>";
            columnstring += "</tr>";
            Loadrpcolumn(dr["id"].ToString(), dr["classify"].ToString());
        }
        dr.Close();
    }
后台也就是调用Loadrpcolumn方法把1层id作为参数,查询出所有1级层,在调用Loadrpcolumn(1层栏目id,所属几层);columnstring是全局变量,前台调用下就出来了
引用 3 楼 jss122414092 的回复:
Repeater 无法做级联的

/// <summary>
    /// 调用改方法
    /// </summary>
    /// <param name="fatherId"></param>
    private void Loadrpcolumn(string fatherId)
    {
        columnstring = "";
        string sql = "select * from info_class where fatherId=" + fatherId + " order by sortnum ,id ";
        OleDbDataReader dr = con.DrSelect(sql, null);
        while (dr.Read())
        {
            columnstring += "<tr class='list' onmouseover=\"this.className='rowcolor_over'\" onmouseout=\"this.className='rowcolor_out'\">";
            columnstring += "<td><input name='jssck' onclick='plchecked_f(this)' value='" + dr["id"].ToString() + "' type='checkbox'></td>";
            columnstring += "<td>" + dr["id"].ToString() + "</td>";
            columnstring += "<td><a href='columns_edit.aspx?cmd=edit&id=" + dr["id"].ToString() + "'>" + dr["name"].ToString() + " " + (dr["pic"] as string != null && dr["pic"] as string != "" ? "<img src='images/image.gif' align='absmiddle' alt='此信息上传了图片' /> " : "") + "</td>";
            columnstring += "<td>" + dr["template"].ToString() + "</td>";
            columnstring += "<td>" + (dr["users"] as string == null ? " " : dr["users"].ToString()) + "</td>";
            columnstring += "<td>" + DateTime.Parse(dr["creationtime"].ToString()).ToString("yyyy-MM-dd") + "</td>";
            columnstring += "<td>" + (dr["typestate"].ToString() == "1" ? "显示" : "<font color='#FF6600'>隐藏</font>") + "</td>";
            columnstring += "<td><a class='nyroModal' style=\"cursor:pointer\" onclick=\"fileimgload('info_class','pic','" + dr["id"].ToString() + "')\">" + (dr["pic"] as string != null && dr["pic"] as string != "" ? "<font color='#FF6600'>有</font>" : "无") + "</a></td>";
            columnstring += "<td><a href='columns_edit.aspx?cmd=edit&id=" + dr["id"].ToString() + "'>编辑</a></td>";
            columnstring += "</tr>";
            Loadrpcolumn(dr["id"].ToString(), "1");
        }
        dr.Close();
    }
    /// <summary>
    /// 递归无限分类(info)
    /// </summary>
    /// <param name="fatherId"></param>
    /// <param name="num"></param>
    private void Loadrpcolumn(string fatherId, string num)
    {
        string sql = "select * from info_class where fatherId=" + fatherId + " order by sortnum ,id ";
        OleDbDataReader dr = con.DrSelect(sql, null);
        while (dr.Read())
        {
            string kg = "";
            for (int i = 0; i < Convert.ToInt32(num); i++)
            {
                kg += "  ";
            }
            columnstring += "<tr class='list' onmouseover=\"this.className='rowcolor_over'\" onmouseout=\"this.className='rowcolor_out'\">";
            columnstring += "<td><input name='jssck' onclick='plchecked_f(this)' value='" + dr["id"].ToString() + "' type='checkbox'></td>";
            columnstring += "<td>" + dr["id"].ToString() + "</td>";
            columnstring += "<td>" + kg + "﹂<a href='columns_edit.aspx?cmd=edit&id=" + dr["id"].ToString() + "'>" + dr["name"].ToString() + " " + (dr["pic"] as string != null && dr["pic"] as string != "" ? "<img src='images/image.gif' align='absmiddle' alt='此信息上传了图片' /> " : "") + "</td>";
            columnstring += "<td>" + dr["template"].ToString() + "</td>";
            columnstring += "<td>" + (dr["users"] as string == null ? " " : dr["users"].ToString()) + "</td>";
            columnstring += "<td>" + DateTime.Parse(dr["creationtime"].ToString()).ToString("yyyy-MM-dd") + "</td>";
            columnstring += "<td>" + (dr["typestate"].ToString() == "1" ? "显示" : "<font color='#FF6600'>隐藏</font>") + "</td>";
            columnstring += "<td><a class='nyroModal' style=\"cursor:pointer\" onclick=\"fileimgload('info_class','pic','" + dr["id"].ToString() + "')\">" + (dr["pic"] as string != null && dr["pic"] as string != "" ? "<font color='#FF6600'>有</font>" : "无") + "</a></td>";
            columnstring += "<td><a href='columns_edit.aspx?cmd=edit&id=" + dr["id"].ToString() + "'>编辑</a></td>";
            columnstring += "</tr>";
            Loadrpcolumn(dr["id"].ToString(), dr["classify"].ToString());
        }
        dr.Close();
    }
后台也就是调用Loadrpcolumn方法把1层id作为参数,查询出所有1级层,在调用Loadrpcolumn(1层栏目id,所属几层);columnstring是全局变量,前台调用下就出来了
好复杂,看的我都晕了
加载更多回复(3)

62,046

社区成员

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

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

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

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