手机版

ASP .网中显示数据表格(一种控件)和中继器重复数据如何合并

时间:2021-09-07 来源:互联网 编辑:宝哥软件园 浏览:

这几天做一个项目有用到表格显示数据的地方,客户要求重复的数据列需要合并,就总结了一下显示数据表格(一种控件)和中继器关于重复数据合并的方法。

效果图如下:

GridView:前台代码:

div ASP : GridView ID=' gvIncome ' runat=' server ' AutoGenerateColumns=' False ' Columns ASP : template field header text='一级ItemTemplate asp:Label标签标签ID='标签0 ' runat='服务器' Text=' % # Eval(' aname ')% '/asp:标签/item template/asp:模板字段asp:模板字段标题文本='二级ItemTemplate asp:Label标签标签标识='标签1 '运行时间='服务器'文本=' % # Eval(' bname ')% '/ASP :标签/项目模板/ASP :模板字段ASP :模板字段标题文本='三级ItemTemplate asp:Label标签标签ID='标签2 ' runat='服务器' Text=' % # Eval(' cname ')% '/ASP :标签/项目模板/ASP :模板字段ASP :模板字段标题文本='四级ItemTemplate asp:Label标签标签ID='标签3 ' runat='服务器' Text=' % # Eval(' dname ')% '/ASP :标签/项目模板/ASP :模板字段/列/ASP :网格视图/div复制代码代码如下: span style='行高: 1.5; font-family: verdana,Arial,Helvetica,无衬线字体;font-size : 14px背景-颜色' : rgb(255,255,255);'/spanGridView后台代码

public void DataBind(){字符串SQL='从嗜酒者互诫协会中选择a.aname,b.bname,c.cname,d.dname作为a.aid=b.aid上的右联接bb作为b .投标=c .投标上的右联接复写的副本作为投标上的左联接截止日期(Deadline Date的缩写)作为d . cid=a . aid的c . cid订单;Sqldatadapter sda=new Sqldatadapter(SQL,cn);数据集ds=新数据集();sda .填充(ds);gvIncome .数据源=dsgvIncome .DataBind();//合并行(gvIncome .头儿罗gvIncome .行数。计数);int colnum=gvIncome .列。计数;//获取显示数据表格(一种控件)中获取列数合并行(gvIncome,4,' Label ');//GridView要整合的列数需要改变的标签控件} public static void MergeRows(GridView gvw,int colnum,string controlNameo){ for(int col=0;colnumcol ) //遍历每一列{ string control name=control nameo col . ToString();//获取当前列需要改变的标签控件(int rowIndex=gvw)的身份证.行数。计数-2;行索引=0;rowIndex - ) //GridView中获取行数并遍历每一行{ GridViewRow row=gvw .行[行索引];//获取当前行GridViewRow previousRow=gvw .行[行索引1];//获取当前行的上一行Label row_lbl=row .单元格[列]。查找控件(控件名)作为标签;////获取当前列当前行的标签控件身份的文本标签previousRow _ LBL=previousRow .单元格[列]。查找控件(控件名)作为标签;////获取当前列当前行的上一行的标签控件身份的文本if (row_lbl!=null previousRow_lbl!=null) //如果当前行和上一行要改动的标签的身份的文本不为空{ if (row_lbl .Text==previousRow_lbl .文本)//如果当前行和上一行要改动的标签的身份的文本不为空且相同{ //当前行的当前单元格(单元格跨越的行数。默认值为0 ) 与下一行的当前单元格的跨越行数相等且小于一则返回2否则让上一行行的当前单元格的跨越行数一排。单元格[列]。行跨度=前一行.单元格[列]。RowSpan 1?2 :前一排.单元格[列]。行跨度1;//并让上一行的当前单元格不显示前一排.单元格[列]。可见=假;} } } } }中继器前台代码:

//表格样式样式表{边框-折叠崩溃表tr td,th { border:1px纯黑;}/style//***************分区表tr th一级/th二级/th三级/th四级/th/tr AsP :中继器ID=' RPtincome ' runat=' server ' item template tr TD runat=' server ' ID=' td0 ' % # Eval(' aname ')%/TD TD runat=' server ' ID=' td1 ' % # Eval(' bname ')%/TD TD runat=' server ' ID=' td2 ' % # Eval(' cname ')%/TD TD TD TD runat=' server ' ID=' td3 ' % # Eval(' dname ')%/TD/tr后台代码:

public void DataBind(){字符串SQL='从嗜酒者互诫协会中选择a.aname,b.bname,c.cname,d.dname作为a.aid=b.aid上的右联接bb作为b .投标=c .投标上的右联接复写的副本作为投标上的左联接截止日期(Deadline Date的缩写)作为d . cid=a . aid的c . cid订单;Sqldatadapter sda=new Sqldatadapter(SQL,cn);数据集ds=新数据集();sda .填充(ds);rptIncome .数据源=dsrptIncome .DataBind();for(int I=0;i4;i ) //遍历每一列{ string rpttd=' td字符串tdidname 1=rpttd I . ToString();合并单元格(tdidname 1);//把当前列的任务描述的身份文本作为方法的参数} }///summary/////summary////param name=' tdidname 1 '当前列当前行的任务描述的身份文本/param private void MergeCell(字符串tdIdName1) { for (int i=rptIncome .项目。计数-1;I 0;i - ) //rptIncome .项目。计数- 1数据总行数(数据从0开始)遍历当前列的每一行{ MergeCellSet(tdIdName1,I);} }///summary/////summary////param name=' tdidname 1 '当前列当前行的任务描述的身份文本/param ///param name='i '当前行/param private void MergeCellSet(字符串tdIdName1,int I){ HtmlTableCell单元格prev=rptIncome .项目[i - 1].FindControl(tdIdName1)作为HtmlTableCell//获取下一行当前列的任务描述所在的单元格HtmlTableCell单元格=rptIncome .项目[i].FindControl(tdIdName1)作为HtmlTableCell//获取当前行当前列的任务描述所在的单元格细胞RowSpan=(单元格RowSpan==-1)?1 :室RowSpan//获取当前行当前列单元格跨越的行数cellPrev .RowSpan=(cellPrev .RowSpan==-1)?1 : cellPrev .RowSpan//获取下一行当前列单元格跨越的行数如果(单元格InnerText==cellPrev .InnerText) { //让下一行的当前单元格的跨越行数当前行的跨越行数cellPrev .RowSpan=单元格RowSpan .细胞。可见=假;//隐藏当前行//关键代码,再判断执行第2列的合并单元格方法} }以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

版权声明:ASP .网中显示数据表格(一种控件)和中继器重复数据如何合并是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。