/// <summary>
        /// 将数据集转成哈希表数组
        /// </summary>
        /// <param name="ds">数据源</param>
        /// <param name="fields">要存储到哈希表的字段</param>
        /// <returns></returns>
        public Hashtable[] CovertDataSetToHashtable(SqlDataReader ds, string[] fields)
        {
            Hashtable[] hts = new Hashtable[1000];
            int i = 0;

            while (ds.Read() && i < hts.Length)
            {
                foreach (string field in fields)
                {
                    hts[i++].Add(field, ds[field]);
                }
            }

            return hts;
        }

        /// <summary>
        /// 用div、ul、li 生成表格
        /// </summary>
        /// <param name="colCount">每行的列数</param>
        /// <param name="hts">表示数据集的哈希表</param>
        /// <param name="actionKey">要生成的数据表的关键字类型(即根据不同的关键字生成不同的表结构)</param>
        /// <returns></returns>
        public string GenerateTable(int colCount, Hashtable[] hts, string actionKey)
        {
            int i = 0;
            StringBuilder resultStr = new StringBuilder();

            foreach (Hashtable ht in hts)
            {
                if (ht.Keys.Count == 0)
                    break;

                //将索引复位
                if (++i % colCount == 0)
                    i = 0;

                //colCount余数为1说明将进行分行,接下的列将纳入新的行中
                if (i == 1)
                    resultStr.Append("<ul>");

                //生成列元素内容
                resultStr.Append(GenerateColumn(ht, actionKey));

                //colCount余数为0说明行结束
                if (i == 0)
                    resultStr.Append("</ul>");
            }

            //如果colCount的余数在0和colCount之间,则说明前一行的列数不够colCount,结尾尚无</ul>,故需补上
            if (0 < i && i < colCount)
                resultStr.Append("</ul>");

            return resultStr.ToString();
        }

        /// <summary>
        /// 生成列元素的内容
        /// </summary>
        /// <param name="ht">提供列元素相关数据的哈希表</param>
        /// <param name="actionKey">要生成的数据表的关键字类型(即根据不同的关键字生成不同的表结构)</param>
        /// <returns></returns>
        public string GenerateColumn(Hashtable ht, string actionKey)
        {
            StringBuilder resultStr = new StringBuilder();

            //列标签开始
            resultStr.Append("<li>");

            //内容,根据不同在actionKey生成不同的列数据
            switch (actionKey)
            {
                case "":                   
                    break;
                default:
                    resultStr.Append("分隔");
                    break;
            }

            //列标签结束
            resultStr.Append("</li>");

            return resultStr.ToString();
        }

评论
发表评论

您还没有登录,请登录后发表评论

joerong666
搜索本博客
存档
最新评论