这几天做一个项目有用到表格显示数据的地方,客户要求重复的数据列需要合并,就总结了一下显示数据表格(一种控件)和中继器关于重复数据合并的方法。
效果图如下:
GridView:
前台代码:
diva sp : GridView ID=' gvIncome ' runat=' server ' autogenerateColumns=' False '列p : templatefield标头文本='一级itemtatelasp :标签ID='标签0 ' runat='服务器' Text=' % # Eval(' aname ')% '/asp:标签/item tapel/asp: templatefieldasp : templatefield标头Text='二级itemtatelasp :标签标识='标签1 '运行时间='服务器'文本=' % # Eval(' bname ')% '/asp:标签/item tapel/asp: templatefieldasp : templatefield标头Text='三级itemtatelasp :标签ID='标签2 ' runat='服务器' Text=' % # Eval(' cname ')% '/asp:标签/item tapel/asp: templatefieldasp : templatefield标头Text='四级itemtatelasp :标签ID='标签3 ' runat='服务器' Text=' % # Eval(' dname ')% '/asp:标签/itemtapel/asp3360模板字段/列/asp:GridView/divGridView前台代码span style='行高: 1.5; font-family: verdana,Arial,Helvetica,无衬线字体;font-size : 14px背景-color: rgb(255,255,255);/span后台代码:
public void DataBind(){字符串SQL='从嗜酒者互诫协会中选择a.aname,b.bname,c.cname,d.dname作为a.aid=b.aid上的右联接bb作为b .投标=c .投标上的右联接复写的副本作为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();//获取当前列需要改变的标签控件IDfor (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;//并让上一行的当前单元格不显示前一排.单元格[列]。可见=假;}}}}}GridView后台代码中继器:
前台代码:
//表格样式样式表{边框-折叠:折叠;}表tr td,th {border:1px纯黑;}/style//* * * * * * * * * * * * * * div表rth一级/th二级/th三级/th四级/th/trasp :中继器ID=' rptIncome ' runat=' server ' itemtatetrtd runat=' server ' ID=' td0 ' % # Eval(' aname ')%/tdtd runat=' server ' ID=' td1 ' % # Eval(' bname ')%/tdtd runat=' server ' ID=' td2 ' % # Eval(' cname ')%/tdtd runat runat runat=' server ' ID=' td3 ' % # Eval(' dname ')%/TD/前台代码后台代码:
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 '当前列当前行的任务描述的身份文本/paramprivate 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 '当前行/paramprivate 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 .网中显示数据表格(一种控件)重复表格列合并的实现方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!