数据库结构:编号ID,名称NAME,等参数实现功能:生成HTML页面的几行几列,,,,行列参数是自己设置的<ul>        
  <li>名称1</li>    
  <li>名称2</li>
  ........列:固定参数n,执行循环......
  <li>名称n</li>
</ul>
/*========根据数据的列数计算出总共行数循环的次数======*/
<ul>        
  <li>名称n+1</li>    
  <li>名称n+2</li>
  ...........
  <li>名称n+n</li>
</ul>说白了:就是按照数据量循环生成指定“行列”!public string HtmlHelper()
{
  int intRecords; //定义总共多少数据
  int intColumns;  //定义总共多少列
  int intRows = (intRecords + intColumns -1)/ intColumns; //计算处数据处理填充的行数
  //因为要考虑填充数据有时候不能正好满足行列需求,所以只能默认<li>为空</li>
  我改如何写,,,还希望高手帮忙
}

解决方案 »

  1.   


    public string HtmlHelper(DataTable dt,int columns) 
    dt.Rows.Count 就是总记录数int rows= dt.Rows.Count%columns==0? dt.Rows.Count/columns :dt.Rows.Count/columns+1;
    rows 实际行数for(int i=0;i<rows;i++)
    {
        if(i<dt.Rows.Count)
             // 有数据
        else
             //空数据 占位
    }
      

  2.   


    private void LaLaLa()
        {
            StringBuilder sb = new StringBuilder();
            sb.Append("<div>");
            sb.Append("<ul>");
            for (int i = 0; i < 100; i++)
            {
                sb.Append("<li>").Append(i.ToString()).Append("</li>");
            }
            sb.Append("</ul>");
            sb.Append("</div>");
            //……
        }
      

  3.   

    就<ul><li>来说能实现几行几列的效果么
      

  4.   


    public string HtmlHelper()
    {
        int intRecords; //定义总共多少数据 
        int intColumns;  //定义总共多少列    int intRecords;//总记录数
        string strData;//数据内容    StringBuilder sb = new StringBuilder();
        for (int iRowIndex=0; iRowIndex<intRecords; iRowIndex++)
        {
            sb.Append("<ul>");        for (int iColIndex=0; iColIndex<intColumns; iColIndex++)
            {
                if (iRowIndex * intColumns + iColIndex < dt.Rows.Count)
                {
                    strData = "数据内容";
                }
                else
                {
                    strData = "为空";
                }            sb.Append("<li>").Append(strData).Append("</li>");
            }        sb.Append("</ul>");
        }
    }
      

  5.   


            public static string HtmlRowsHelper(int columns, int records)
            {
                string html_Template = Common.FsoHelper.FileReader("Template.html");
                Hashtable ht = new Hashtable();
                List<Model> list = BLL.GetList();            int rows = records % columns == 0 ? records / columns : records / columns + 1;
                StringBuilder sb = new StringBuilder();
                string database;            for (int irows = 0; irows < rows; irows++) 
                {
                    sb.Append("<ul>");
                    for (int icolumns = 0; icolumns < columns; icolumns++)
                    {
                        if (irows * columns + icolumns < records)
                        {
                            database = "<a href='/html/" + list[icolumns].Id.ToString() + ".html'>" + list[icolumns].ClassName.ToString() + "<a>"; 
                        }
                        else
                        {
                            database = "";
                        }
                        sb.Append("<li>").Append(database).Append("</li>");
                    }
                    sb.Append("</ul>");
                }            ht.Add("{$ReplaceClassList$}", sb.ToString());            html_Template = Common.FsoHelper.Replace(html_Template, ht);
                Common.FsoHelper.FileWriter("Field.html", html_Template);
            }
    大概写了,但是执行不了。不知道具体问题出在哪里。。本来显示后用CSS控制每行显示4个LI,总共14个数据好了,思路都给出来了,,差不多能写出来了谢谢了
      

  6.   

    是不是这里出问题了database = "<a href='/html/" + list[icolumns].Id.ToString() + ".html'>" + list[icolumns].ClassName.ToString() + "<a>";
      

  7.   

    database = string.Format(@"<a href='/html/{0}.html'>{1}</a>", list[icolumns].Id, list[icolumns].ClassName);
      

  8.   

    后面标签<a> 应为</a>
      

  9.   

    应该是html 标记不对还有一个关键点,不要用嵌套for 循环你这个还没到非要嵌套for 循环 的地步
      

  10.   


    那就要用一层for循环,然后再在循环中判断有没有列满,列满换行
      

  11.   

    应该是html 标记不对 还有一个关键点,不要用嵌套for 循环 你这个还没到非要嵌套for 循环 的地步 那该怎么写呢????不是这样写法,,,已经通过了,谢谢了,非常谢谢了
      

  12.   

    就用一层for循环,需要用一个变量记录列数,然后再在循环中判断列数有没有够,如果够了就换行
      

  13.   


    for (int irows = 0; irows < rows; irows++) 
                {
                    if(irows==0||(irows>columns&&irows%columns==1))
                    {
                         sb.Append("<ul>");
                    }
                    else if(irows%columns==0)
                    {
                         sb.Append("</ul>");
                    }
                    //...
                }
      

  14.   


    for (int irows = 0; irows < rows; irows++) 
                {
                    if(irows==0||(irows>columns&&irows%columns==1))
                    {
                         sb.Append("<ul>");
                    }
                    //...
                    if(irows%columns==0)
                    {
                         sb.Append("</ul>");
                    }
                    
                }