Table轻松实现报表

最近做了十几个报表模块,对Table控件颇有心得,与大家分享一下
首先看看为什么要使用Table控件

Table轻松实现报表  转载

看一下这个报表,各位可能要笑了,这个用DataGrid做就可以了
但问题是数据并不是直接从数据库取出来的,要经过程序的多重循环统计,这个表在数据库中没有原形,所以要使用DataTable 就要重新构造表结构,很烦人地: P

而使用Table 就容易的多了,构造表用两层循环,外层循环生成TableRow,内层循环再循环统计出数据然后把数据生成TableCell添加入TableRow

下面再看看
Table轻松实现报表  转载

这个用于分类统计,怎么样,你的DataGrid是否能如此自由的输出

Table轻松实现报表  转载

动态生成列

 怎么样,是否你的程序也需要这种更容易控制的输出呢

优势与劣势

注意(MSDN)   通过编程方式对表行或单元格进行的添加或修改,不会在向服务器执行发送操作后仍继续保留。表行和单元格是其自身的控件,而不是 Table 控件的属性。对表行或单元格进行的更改必须在向服务器进行各次发送之后重建。如果需要进行大量修改,则使用 DataListDataGrid 控件而不是 Table 控件。

不保存ViewState,性能没话说,缺点是无法交互。各取所需吧

下面看看Table 的用法
Table本身没有方法为自己添加行,添加行的操作是这样的

TableRow trow = new TableRow();//创建TableRow对象
Table.Rows.Add(trow);//将对象添加到Table的Rows 集合

只添加行是没有意义的,下面给行添加单元格

TableCell tcell = new TableCell();//创建
tcell.Text = "测试单元格";
trow.Cells.Add(tcell);//添加入Cells集合

这就是所有操作。。。

下面是一点心得

对于列比较多的表但是生成新TableCell就够受了,用如下函数

  public static TableCell newCell(string Text)
  {
   TableCell cell=new TableCell();
   if(Text!="0"&&Text!="0.00")        //为了过滤0,满屏幕的0没准会把你的客户吓跑
    cell.Text=Text;
   else
    cell.Text="";
   return cell;
  }

  public static TableCell newCell(string Text,string ToolTip)      //重载函数,对于比较长的表给单元格添加ToolTip不会让你的客户手足无措
  {
   TableCell cell=new TableCell();
   if(Text!="0"&&Text!="0.00")
    cell.Text=Text;
   else
    cell.Text="";
   cell.ToolTip=ToolTip;
   return cell;
  }

  public static TableCell newCell(string Text,string ToolTip,System.Web.UI.WebControls.HorizontalAlign align)      //还没找到更好的控制整列水对齐方式的方法: (
  {
   TableCell cell=new TableCell();
   if(Text!=""&&Text!="0.00")
   {
    cell.Text=Text;
    cell.HorizontalAlign=align;
   }
   else
    cell.Text="";
   cell.ToolTip=ToolTip;
   return cell;
  }

Table轻松实现报表  转载        private void BtnRefresh_Click(object sender, System.EventArgs e)


so,over

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-02-19
  • 2021-12-24
  • 2021-12-27
猜你喜欢
  • 2021-11-27
  • 2022-12-23
  • 2021-11-19
  • 2021-11-21
  • 2021-12-19
  • 2022-01-02
相关资源
相似解决方案