读书人

Repeater生成的表格IE9显示错误

发布时间: 2013-08-11 22:22:29 作者: rapoo

Repeater生成的表格IE9显示异常
[img=http://8e.images22.51img1.com/6000/li2008kui/e784b25611917f0153adcbf5120ac6b5.jpg#100136645][/img]
[解决办法]
图片可以传到CSDN上来
[解决办法]
运行页面,鼠标右键,查看网页源文件

你直接检查一下生成的HTML代码是些什么,你就找到原因了
[解决办法]
Repeater里的td如果是空的话加一个空格 

还有就是控制好每个td的百分比
[解决办法]
包含Repeater的table设置其width="100%",然后在Repeater内的td设置其width属性值
<td class="name" align="center" style="width:5%;">
<%# Container.ItemIndex + 1 %>
</td>
你首先算好了多少列,然后正好凑够100%即可,这个得你自己调整了。
[解决办法]
你应该贴生成后的html源码,即加载完页面后,右键点击页面,选“查看源文件”,把那段贴出来
[解决办法]

引用:
没看到Repeater 的任何东西
下面那个《tr》《td》《/td》《/tr》td里没东西是我原本就这样写有的 Repeater 的<tr><td>都没看到


Repeater控件只是模板,生成后它就消失了,它的ID也不会出现,它只关心你给它的各模板的定义

例子1:
<asp:Repeater ID="Rep_Con" runat="server">
<HeaderTemplate>
<table class="style1" style="border: 1px solid #949694" cellspacing="0px" cellpadding="6px">
<tr>
<td class="td1" style="border-bottom-style: solid; border-bottom-width: 1px; border-bottom-color: #949694; background-color: #D8E5F6">
企业名称</td>
<td class="td1" style="border-bottom-style: solid; border-bottom-width: 1px; border-bottom-color: #949694; background-color: #D8E5F6">
被查看的简历</td>


<td class="td2" style="padding-right:30px;">
最近查看时间</td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td class="td1" style="border-bottom-style: dotted; border-bottom-width: 1px; border-bottom-color: #949694">
<a href='../../JobView.aspx?CID=<%# Eval("CompanyID")%>' target="_blank" style="color:#5A7D9C; text-decoration:none"><%# Eval("CompanyName")%></a></td>
<td class="td1" style="border-bottom-style: dotted; border-bottom-width: 1px; border-bottom-color: #949694">
<a href='../Resume/LookResume.aspx?RID=<%# Eval("ResumeID")%>' target="_blank" style="color:#5A7D9C; text-decoration:none"><%# Eval("ResumeName")%></a></td>
<td style="color:Black" class="td3">
<%# Eval("ConcernDate")%></td>
</tr>
</ItemTemplate>
<FooterTemplate>
<tr>
<td colspan="4" style="text-align:right">
<webdiyer:AspNetPager ID="AspNetPager1" runat="server" HorizontalAlign="Right" NumericButtonCount="10"
PagingButtonSpacing="10px" ShowPageIndexBox="Never" NextPageText=">"
PrevPageText="<" PageSize="10"
FirstPageText="<<" LastPageText=">>" Width="100%" AlwaysShow="True" onpagechanged="AspNetPager1_PageChanged">


</webdiyer:AspNetPager>
</td>
</tr>
</table>
</FooterTemplate>
</asp:Repeater>




//下面是带换行背景效果的
<asp:Repeater ID="Rep_Mes" runat="server">
<HeaderTemplate><table width="714" border="0" cellspacing="0" cellpadding="0"></HeaderTemplate>
<ItemTemplate>
<tr>
<td width="100" height="30" align="left" valign="middle" bgcolor="#f0f5fb"> <%# RetunrDate(Eval("InTop"), Eval("CreateDate")) %></td>
<td width="614" height="30" align="left" valign="middle" bgcolor="#f0f5fb"><a href='UserFiles/<%# Eval("FileName")%>' target="_blank"><%# ReturnMessageTitle(Eval("MessageTitle"), Eval("Price"), Eval("ImageNum"), Eval("AreaName"), Eval("CategoryName"))%></a></td>
</tr>
</ItemTemplate>
<AlternatingItemTemplate>
<tr>
<td height="30" align="left" valign="middle"> <%# RetunrDate(Eval("InTop"), Eval("CreateDate")) %></td>
<td height="30" align="left" valign="middle"><a href='UserFiles/<%# Eval("FileName")%>' target="_blank"><%# ReturnMessageTitle(Eval("MessageTitle"), Eval("Price"), Eval("ImageNum"), Eval("AreaName"), Eval("CategoryName"))%></a></td>
</tr>
</AlternatingItemTemplate>
<FooterTemplate>
<tr>


<td height="30" colspan="2" align="left" valign="middle"> </td>
</tr>
<tr>
<td height="70" colspan="2" align="center" valign="middle" bgcolor="#F0F5FB" class="font34">
<table cellpadding="0" cellspacing="0">
<tr>
<td>
<webdiyer:AspNetPager ID="AspNetPager1" runat="server" Width="100%"
HorizontalAlign="Center" NumericButtonCount="10" PagingButtonSpacing="10px"
ShowFirstLast="False" ShowPageIndexBox="Never" NextPageText="下一页>>"
PrevPageText="<<上一页" OnPageChanged="AspNetPager1_PageChanged"
PageSize="100">
</webdiyer:AspNetPager>
</td>
<td>
(共<span id="Spa_RecordNum" runat="server"></span>条信息)</td>


</tr>
</table>
</td>
</tr>
</table>
</FooterTemplate>
</asp:Repeater>


[解决办法]
这就奇怪了,从2楼的图片看来,第二行记录明显多出了一个td单元,从它超出标题行就看得出

你一在不使用UpdatePanel时,则正常,

但一使用UpdatePanel,则第二行多出一个td单元,按理说应该是UpdatePanel没正确包住,因为你使用UpdatePanel时,局部刷新的HMTL只限于UpdatePanel包围圈里的,这里多出一个td。

但你又说正确

你可以假设一下,UpdatePanel包住的部分会被刷新,相当于使用JS重构这部分的HTML代码,或许你能找到原因
[解决办法]
单从你12楼发出来的源码,没看出什么问题,除非你在这个事件中OnItemCommand="Repeater1_ItemCommand"中自己显示向控件的行对象中添加了一些单元什么的,你自己检查一下

//最后建议你估计一些哪些数据源可能没有值,也就是空值时,你做这样的处理
<td class="name" align="center">
<%# (Eval("sjName") != DBNull.Value) ? Eval("sjName") : " "%>
</td>


//如果那些没绑定的,直接给空格HTML标识
<td class="name" align="center">
 
</td>
//这样可以确保生成的单元数目一致
[解决办法]
楼主问题解决了么,我也出这样的问题,已经解决,并不是因为你的代码没有闭合,也跟Updatepanel有一定关系。
我的解决办法是把Html原代码改了一下,去掉缩进,这样就OK了。

你用的是不是VS2010,并且启用了虚空格。这样在IE9下就有问题,火狐什么的都没事儿。

读书人网 >asp.net

热点推荐