怎么实现在ASP.NET中制作表格,并将数据库中数据定位到特定的单元格中,谢谢了 20
之前尝试用repeater、Gridview控件但都不能将数据定位到特定单元格上。问各位大神,怎么实现这个功能。在下感激不尽 展开
2015-01-18
问你几个问题:
(1) 你是不是初学者...或者说有没有接触过 动态添加数据方便的 经验
(2)如果不考虑后台,你能不能用html的table布局写一张 上面的 报表,就是数据是死的,你用html table设计成你上面的样子。(这个是html的基础,你的表也不复杂)
(3)你从数据库获取的数据集的DataSet,是不是每一行都对应的,比如说0:00-0:2:00 这里是不是有一行对应的数据,2:00-4:00也有一行对应的?以此类推,我观察你上面发现有8行数据,但是要求有12行,如果你后台数据集值返回8行的话,你可以在你数据库表加一个字段就是标志每条数据代表的时间,比如0代表0:00-2:00 ,1代表2:00-4:00,然后添加一张数字表,这个数字表只有一个字段,然后就添加数字0,1,2,3,4,....,11,就是12个数据,然后你拿数字表左连接你那个数据表,那么是不是数据表没有的字段会在连接后右边全部是NULL?这样,你C#判断的时候,判断那一行的ID是不是ID就知道这个有没有数据了
如果上面的三个问题,你都满足的话,这非常容易...asp.net里面有个Literal控件,这个控件的作用很简单,就是把Literal.Text原原本本放到前台,包括Html标签...跟平常的Lable控件差不多,只是Lbale到了前台被解释成了span标签,而Literal是原封不动地显示。
怎么做呢,你不是要一个表头么,
假设 <tr><td>时间</td><td>开标时间</td><td>停表时间</td></tr> 这个是表头(我简化了,你自己理解)
把我就先new一个StringBuilder
StringBuilder sb = new StringBuilder();//这个你应该懂吧
然后我往sb添加字符串
sb.Append("<tr><td>时间</td><td>开标时间</td><td>停表时间</td></tr>")//现在是不是把表头放到sb里面了。
//下面就开始遍历dataset了
int i=0;
foreach(DataRow dr in ds.Tables[0].Rows)
{
string tmp="<tr><td>"+i.ToString()+":00-"+((i+1)*2).ToString()+"</td><td>"+dr[""].ToString()+"....</tr>"
//看的明白吧,假如i是0,那这就是<tr><td>0:00-2:00</td>....这是你上面第一行数据,数据跟列数,你自己对应,如此循环
i++;
sb.Append(tmp);//把数据追加到sb里面
}
然后全部弄玩了,是不是一个前台的html table就被放到sb里面了
最后
Literal1.Text=sb.ToString();//把sb转成字符串放到Literal里面,这样,一个表格就显示到前台去了
如果你看不太明白,可能基础不过关,那就尝试用别人的控件吧