首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

帮偶看看asp.net显示表格滴有关问题哈!

2012-02-12 
帮偶看看asp.net显示表格滴问题哈!-_-!用asp.net输出------------------------------第一aaaaA00100200300

帮偶看看asp.net显示表格滴问题哈!-_-!
用asp.net输出  
  ------------------------------  
  第一 aaaa A 001  
  002 003  
  003  
 
  bbbb B 001
  002
   
  ------------------------------  
  第二 aaa A1 001  
  002
   
  bbb A2 111  
  222
  333  
------------------------------ 
这样的表格其中每列都是动态的,就好像是个树形滴结构,然后用table滴形式显示出来,第二列是根据第一列得出滴,第三列又是根据第二列得出滴,这样滴表格如何用response.write("<table>")滴方式打出来捏(因为偶一直用这样滴方式输出显示table,觉得比控件灵活),或者有米一个更好滴方法,可以很灵活滴显示出来捏,希望帅哥美女们帮帮忙哈,郁闷死咯!

[解决办法]
可以动态改变数据集。另外可以用你那种方式,只要知道结构,有什么不可以构造出来的?不过那种方式维护起来比较麻烦
[解决办法]
可以用DataList,在<headerTemplate>里写<table>,在<ItemTemplate>里写<tr><td></td></tr>,即表的内容,在<FooterTemplate>里写</table>就形成一个表格了。
[解决办法]
我想我明白你的意思了,为什么不用TreeView控件呢,专门用来显示这种树形结构的数据的。
[解决办法]
用递归做,我整过一个,不过是用Table控件做的,下面是代码

C# code
 
    private int totalLevel = 1; //最大产品树级数
    private DataView dvstore;  //表视图

    private void DrawTheTable()
    {
      Tbl2.CssClass = "store";
      TableRow tr = new TableRow();
      tr.BackColor = Color.Gray;
      tr.ForeColor = Color.White;
      TableCell tc5 = new TableCell();
      TableCell tc1 = new TableCell();
      tc5.ColumnSpan = totalLevel;
      tc5.Text = "产品类别";
      tc5.Width = 100 * totalLevel;
      tc1.Text = "产品编号";
      tr.Cells.Add(tc5);
      tr.Cells.Add(tc1);
      Tbl2.Rows.Add(tr);
      DrawTheTableRows(dvstore, "0", 0, new TableRow());
    }
    private void DrawTheTableRows(DataView dv, string parentNo, int level, TableRow tr)
    {
      dv.Sort = "ParentNo";
      DataRowView[] drvs = dv.FindRows(parentNo);

      if (drvs.Length > 0)
      {
        for (int i = 0; i < drvs.Length; i++)
        {
          TableRow tbr;
          if (i != 0)
          {
            tbr = new TableRow();
          }
          else
          {
            tbr = tr;
          }
          //判断是不是组,需要你自己做算法,比如可以用FindRows方法查看parentno是这个id的记录是是否大于1
          if (Convert.ToBoolean(drvs[i]["IsGroup"].ToString()))
          {
            TableCell tc = new TableCell();
            tc.BackColor = GetColor(level);


            tc.RowSpan = GetSubProCount(dv, drvs[i]["PNo"].ToString());
            tc.Text = drvs[i]["ProName"].ToString() + "—" + drvs[i]["PNo"].ToString();
            tbr.Cells.Add(tc);
            DrawTheTableRows(dv, drvs[i]["PNo"].ToString(), level + 1, tbr);
          }
          else
          {
            for (int j = level; j < totalLevel; j++)
            {
              TableCell tc = new TableCell();
              tbr.Cells.Add(tc);
            }
            TableCell tc1 = new TableCell();
            tc1.Text = drvs[i]["PNo"].ToString();
            tbr.Cells.Add(tc1);
            Tbl2.Rows.Add(tbr);
          }
        }
      }
      else
      {
        if (parentNo != "0")
        {
          for (int j = level; j < totalLevel + 1; j++)
          {
            TableCell tc = new TableCell();
            tr.Cells.Add(tc);
          }
          Tbl2.Rows.Add(tr);
        }
      }
    }
    /// <summary>
    ///
    /// </summary>
    /// <param name="dv"> </param>
    /// <param name="proNo"> </param>
    /// <returns> </returns>
    private int GetSubProCount(DataView dv, string proNo)
    {
      dv.Sort = "ParentNo";
      DataRowView[] drvs = dv.FindRows(proNo);
      int returnCount = 0;
      if (drvs.Length > 0)
      {
        for (int i = 0; i < drvs.Length; i++)
        {
          if (Convert.ToBoolean(drvs[i]["IsGroup"].ToString()))
          {
            returnCount += GetSubProCount(dv, drvs[i]["PNo"].ToString());
          }
          else
          {
            returnCount += 1;
          }
        }
      }
      else
      {
        returnCount = 1;
      }
      return returnCount;
    }
    private void GetLevel(DataView dv,string parentNo,int level)
    {
      dv.Sort = "ParentNo";
      DataRowView[] drvs = dv.FindRows(parentNo);

      if (drvs.Length > 0)
      {
        if (totalLevel < level)
        {
          totalLevel = level;


        }
        for (int i = 0; i < drvs.Length; i++)
        {
          if (Convert.ToBoolean(drvs[i]["IsGroup"].ToString()))
          {
            GetLevel(dv, drvs[i]["PNo"].ToString(), level + 1);
          }
        }
      }
    }
    /// <summary>
    /// 颜色
    /// </summary>
    /// <param name="itemIndex"> </param>
    /// <returns> </returns>
    private Color GetColor(int itemIndex)
    {
      Color returnColor = new Color();
      //string returnColorStr = "";
      if (itemIndex == 0)
      {
        returnColor = Color.FromName("#cccccc");
      }
      else if (itemIndex == 1)
      {
        returnColor = Color.FromName("#dfdfdf");
      }
      else
      {
        returnColor = Color.FromName("#efefef");
      }
      return returnColor;
    }
    protected void btn_st_Click(object sender, EventArgs e)
    {
      dvstore = GetStoreData(dtn.Year.ToString() + dtn.Month.ToString()).DefaultView; //获取数据
      GetLevel(dvstore, "0", 0);
      //画图
      DrawTheTable();
    }


[解决办法]
根据你的情况,我把我写的给修改了下,把多余的字段去掉了,不过我的库里有个字段是isGroup,标注次ID是否是个组,还有就是0是根,不能有ID,具体情况你得自行修改了,代码注释很少,仔细看点吧,效果估计还是能满足你需求的。
[解决办法]
d

热点排行