C# 动态创建一个表格

.Net技术 码拜 10年前 (2015-05-11) 2375次浏览 0个评论
 

我网站现在的输出如下:
C# 动态创建一个表格
我现在希望输出这样的效果:
C# 动态创建一个表格
该怎么动态创建这样一个表格?前端怎么写?后台怎么写?还是只需要后台写?

你可以前端放个asp:table
后台定义
TableRow tr=new TableRow();
TableCell tc=new TableCell();
tc.Text=xxx;
tr.Cells.Add(tc);
table.Rows.Add(tr);

可以设置tc.ColumnSpan=2或tc.RowSpan=2合并单元格

tc.BorderColor = Color.Black;//设置线框颜色
 tc.BorderWidth = new Unit(1);//线框宽度
tc.HorizontalAlign = HorizontalAlign.Center;//水平居中

                            tc.Controls.Add(newHyperLink);//单元格里放个HyperLink
                            tc.Text = dr1[l].ToString();//设置文本

            tc.RowSpan = 2;//2行合并
        tc.ColumnSpan = 2;//2列合并

                        tc.BackColor = Color.Red;//背景色
                        tc.ForeColor = Color.Blue;//前景色(文本颜色)

        tr.Height = new Unit(20);//行高
        tc.Width = new Unit(60);//列宽

首先 你要截取你的 每一个行的字符串    分成3列。  在后台 拼接table,根据第一个名称 设置rowSpan
前台定义一个asp:table 给个ID
后台每一行数据新建一个tablerow
每一个单元格新建tablecell
设置tablecell的text属性
将tablecell加入tablerow中
引用 2 楼 Z65443344 的回复:

tc.BorderColor = Color.Black;//设置线框颜色
 tc.BorderWidth = new Unit(1);//线框宽度
tc.HorizontalAlign = HorizontalAlign.Center;//水平居中

                            tc.Controls.Add(newHyperLink);//单元格里放个HyperLink
                            tc.Text = dr1[l].ToString();//设置文本

            tc.RowSpan = 2;//2行合并
        tc.ColumnSpan = 2;//2列合并

                        tc.BackColor = Color.Red;//背景色
                        tc.ForeColor = Color.Blue;//前景色(文本颜色)

        tr.Height = new Unit(20);//行高
        tc.Width = new Unit(60);//列宽

我的结果变成了这样:
C# 动态创建一个表格

我该怎么改进?我后台代码是这样的:
string [,] a={{“54541″,”25445222222222222224”},{“54541″,”5454453”}};
        for (int i = 0; i < 2; i++)
        {
            TableRow tr = new TableRow();
            TableCell tc1 = new TableCell();
            TableCell tc2 = new TableCell();
            tc1.BorderColor = System.Drawing.Color.Black;
            tc1.BorderWidth = new Unit(1);
            tc2.BorderColor = System.Drawing.Color.Black;
            tc2.BorderWidth = new Unit(1);
            tc1.Text += a[i,0];
            tc2.Text = a[i, 1];
            tr.Cells.Add(tc1);
            tr.Cells.Add(tc2);
            table1.Rows.Add(tr);
            tc1.RowSpan = 2;
        }

前台页面
<asp:table runat=server xxx xxx 此处省略 xxx cellpadding=0>
这个属性也可以在设计器里修改,默认它是-1,那么单元格与单元格之间就会留空白.设置成0,就都紧挨着了
还有,合并单元格之后,注意行数或列数会改变

比如你第1行第1列两行合并了单元格,那么第一行有3列
第二行就只剩2列了(第1列已经被合并了,不算数了),所以不要再new3次tablecell,那可不就多了一个

40分
所以你应该先把所有第1列相同的筛出来,单独处理
有2行相同,就RowSpan=2
有3行相同,就RowSpan=3

之后就不要再给第一列add tablecell(只第一次赋值,之后的重复数据都不再给第一列赋值)

引用 8 楼 Z65443344 的回复:

所以你应该先把所有第1列相同的筛出来,单独处理
有2行相同,就RowSpan=2
有3行相同,就RowSpan=3

之后就不要再给第一列add tablecell(只第一次赋值,之后的重复数据都不再给第一列赋值)

引用 8 楼 Z65443344 的回复:

所以你应该先把所有第1列相同的筛出来,单独处理
有2行相同,就RowSpan=2
有3行相同,就RowSpan=3

之后就不要再给第一列add tablecell(只第一次赋值,之后的重复数据都不再给第一列赋值)

非常感谢,再问两个问题:
1.怎么清空Table;
2.能不能给个思路,对于这样的情况:
C# 动态创建一个表格
对于 subject 测试变量,测试路径中有相同的路径,我想合并这两个单元格
也就是变成这样
C# 动态创建一个表格
(主要问第一个,第二个我再想想)

1.清空table:table1.rows.clear();
2.合并单元格,其实跟合并subject一样,不过你应该先按测试路径排序,把相同的放到一起,再判断上下两个是否相同,相同就合并

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明C# 动态创建一个表格
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!