Repeater后台合并单元格问题

cainiao66 2011-12-27 01:23:47
前台绑定代码

<table width="100%" border="0" align="center" cellpadding="3" cellspacing="1" bgcolor="#bed6e0" id="repeaterTable">
<cc1:HHRepeater ID="repXmxx" runat="server">
<HeaderTemplate>
<tr>
<td nowrap class="number" style="width: 10%" height="25" align="center">
<cc1:HHRepeaterHead ID="HHRepeaterHead4" AllowSort="true" SortExpression="CName"
Text="绑定列头" runat="server"></cc1:HHRepeaterHead>
</td>

</tr>
</HeaderTemplate>
<ItemTemplate>
<tr class="whitetd" height="24" id='<%#Eval("itemcode") %>' >
<td align="center">
<asp:Literal ID="litCompany" runat="server"></asp:Literal>
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</FooterTemplate>
</cc1:HHRepeater>
<asp:HiddenField ID="SelectRowId" runat="server" />
</table>

这个repeater自己写了一个方法想进行合并单元格

public class HHRepeater : Repeater
{
#region 合并单元格
private int[] mergecolumn = null;

/// <summary>
/// 需要合并列的索引
/// </summary>
public int[] MergeColumn
{
get { return mergecolumn; }
set { mergecolumn = value; }
}


private string[] mergeColContorlName = null;
/// <summary>
/// 需要合并列的控件名称(模板列)
/// </summary>
public string[] MergeColContorlName
{
get { return mergeColContorlName; }
set { mergeColContorlName = value; }
}

/// <summary>
/// 绑定数据源后分组合并
/// </summary>
public void DataBindAndGroup()
{
this.DataBind();
if (mergecolumn != null)
GroupRows(mergecolumn);
}

/// <summary>
/// 合并GridView列中相同的行(Add By Caochen)
/// </summary>
/// <param name="MergeColumn">需要合并列的字符串(1,2,3)</param>
private void GroupRows(int[] MergeColumn)
{
int i = 0, rowSpanNum = 1;

for (++i; i < this.Items.Count; i++)
{
RepeaterItem rItem = this.Items[i-1];
RepeaterItem rItemPrevious = this.Items[i];

for (int col = 0; col < MergeColumn.Length; col++)
{
if (!string.IsNullOrEmpty(mergeColContorlName[col]))
{
ITextControl control = rItem.FindControl(mergeColContorlName[col]) as ITextControl;
ITextControl controlPrevious = rItemPrevious.FindControl(mergeColContorlName[col]) as ITextControl;

if (control != null && controlPrevious != null)
{
if (control.Text.Trim() == controlPrevious.Text.Trim())
{
HtmlTableCell oCell = rItem.FindControl(mergeColContorlName[col]) as HtmlTableCell;
HtmlTableCell oCellPrevious = rItemPrevious.FindControl(mergeColContorlName[col]) as HtmlTableCell;//这里一直都是null,想找到页面的table,请高手指点方法

if (oCellPrevious != null && oCell != null)
{
oCell.RowSpan = (oCell.RowSpan == -1) ? 1 : oCell.RowSpan;
oCellPrevious.RowSpan = (oCellPrevious.RowSpan == -1) ? 1 : oCellPrevious.RowSpan;

if (oCell.InnerText == oCellPrevious.InnerText)
{
oCell.Visible = false;
oCellPrevious.RowSpan += oCell.RowSpan;
}
}
}
}
}
}
}
}
#endregion
}

老大要求用后台,前台不用说了,GridView我也会,悲催。。。。。。。。
...全文
200 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
cainiao66 2011-12-27
  • 打赏
  • 举报
回复
嗯,看来只能采用5、6楼的意见了
孟子E章 2011-12-27
  • 打赏
  • 举报
回复
Repeater不像GridView那样,在后台可以直接访问单元格,Repeater生成什么,完全是靠Teplate来定义的,后台很难得到,你可以在Repeater里面,只定义容器如PlaceHolder控件,Literal控件等,后台进行合并好的单元格直接填充到容器里面,如
jxj0115 2011-12-27
  • 打赏
  • 举报
回复
在后台写html来合并允许不
cainiao66 2011-12-27
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 net_lover 的回复:]
你前台的td都是html标签,后台是无法找到的,至少你应该加上
runat=server才能在后台找到啊
[/Quote]
有其他方法吗,那个要绑定id的话,估计就谈不上什么重用性了
孟子E章 2011-12-27
  • 打赏
  • 举报
回复
你前台的td都是html标签,后台是无法找到的,至少你应该加上
runat=server才能在后台找到啊
cainiao66 2011-12-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 net_lover 的回复:]

C# code不是在后台的吗?
[/Quote]

HtmlTableCell oCell = rItem.FindControl(mergeColContorlName[col]) as HtmlTableCell;
HtmlTableCell oCellPrevious = rItemPrevious.FindControl(mergeColContorlName[col]) as HtmlTableCell;//这里一直都是null,想找到页面的table,请高手指点方法

if (oCellPrevious != null && oCell != null)
{
oCell.RowSpan = (oCell.RowSpan == -1) ? 1 : oCell.RowSpan;
oCellPrevious.RowSpan = (oCellPrevious.RowSpan == -1) ? 1 : oCellPrevious.RowSpan;

if (oCell.InnerText == oCellPrevious.InnerText)
{
oCell.Visible = false;
oCellPrevious.RowSpan += oCell.RowSpan;
}
}

这个代码是有问题的,一直找不到前台的td
孟子E章 2011-12-27
  • 打赏
  • 举报
回复
C# code不是在后台的吗?

62,047

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧