1 <asp:Repeater ID="sdfdsf" runat ="server" > 2 <HeaderTemplate><table></HeaderTemplate> 3 <ItemTemplate> 4 <tr> 5 <td> 6 <%# Eval("Scontent") %> 7 </td> 8 </tr> 9 <tr> 10 <td> <%# Eval("Dtitle") %></td> 11 </tr> 12 </ItemTemplate> 13 <FooterTemplate></table></FooterTemplate> 14 </asp:Repeater>
我想把这两个( <%# Eval("Scontent") %>,<%# Eval("Dtitle") %></td>)绑定当做一个模块,每次都绑定这两个数据,但是有的时候这两个其中之一会是字符串空,这样绑定之后前台会变成有空行,如图,dynamic显示和❤赛赛中间的数据是字符串空,如何去掉这一空行
Eval("Scontent") 做下处理去掉换行符
不是这个的原因,是 <%# Eval("Scontent") %>,<%# Eval("Dtitle") %> 中有一个数据为字符串空导致在显示的时候显示为空白,我的目的是不要这个空白出现
@佰大于: <%# !string.IsNullOrEmpty( Eval("Scontent").ToString())?string.Format("<tr><td>{0}</td></tr>",Eval("Scontent")):""%>
<%# !string.IsNullOrEmpty(Eval("Dtitle").ToString())?string.Format("<tr><td>{0}</td></tr>",Eval("Dtitle")):""%>
我测试了没问题
@佰大于:
<asp:Repeater ID="rp1" runat="server" OnDataBinding="rp1_DataBinding" OnItemCreated="rp1_ItemCreated" OnPreRender="rp1_PreRender">
<HeaderTemplate>
<table>
</HeaderTemplate>
<ItemTemplate>
<%# !string.IsNullOrEmpty( Eval("name").ToString())?string.Format("<tr><td>{0}</td></tr>",Eval("name")):""%>
<%# !string.IsNullOrEmpty(Eval("sex").ToString())?string.Format("<tr><td>{0}</td></tr>",Eval("sex")):""%>
</ItemTemplate>
<FooterTemplate></table></FooterTemplate>
</asp:Repeater>
@风行魔狼:
<asp:Repeater ID="sdfdsf" runat ="server" > <HeaderTemplate><table></HeaderTemplate> <ItemTemplate> <tr> <td> <%# !string.IsNullOrEmpty( Eval("Scontent").ToString())?string.Format("<tr><td>{0}</td></tr>",Eval("Scontent")):""%> </td> </tr> <tr> <td> <%# !string.IsNullOrEmpty(Eval("Dtitle").ToString())?string.Format("<tr><td>{0}</td></tr>",Eval("Dtitle")):""%> </td> </tr> </ItemTemplate> <FooterTemplate></table></FooterTemplate> </asp:Repeater>
还是有空行,我用的vs2015,firefox
@风行魔狼: 您能解释一下这行代码的意思吗?我不太明白,谢谢
@佰大于:如果数据为空就不显示<tr><td></td><tr>,这样就避免了显示空行
@佰大于: 你写的多了<tr><td>,要按照我写的
@佰大于: <asp:Repeater ID="rp1" runat="server" >
<HeaderTemplate>
<table>
</HeaderTemplate>
<ItemTemplate>
<%# !string.IsNullOrEmpty( Eval("name").ToString())?string.Format("<tr><td>{0}</td></tr>",Eval("name")):""%>
<%# !string.IsNullOrEmpty(Eval("sex").ToString())?string.Format("<tr><td>{0}</td></tr>",Eval("sex")):""%>
</ItemTemplate>
<FooterTemplate></table></FooterTemplate>
</asp:Repeater>
@风行魔狼: 恩,我后来发现这个问题了
@风行魔狼: 在请教一下,如果要是想隐藏这个这一块该怎么办呢
@佰大于: 截图中整个tr不显示?
@风行魔狼: 是的
@佰大于: 一样的做法
<asp:Repeater ID="rp1" runat="server" OnDataBinding="rp1_DataBinding" OnItemCreated="rp1_ItemCreated" OnPreRender="rp1_PreRender">
<HeaderTemplate>
<table>
</HeaderTemplate>
<ItemTemplate>
<%# !string.IsNullOrEmpty( Eval("name").ToString())?string.Format("<tr><td><label id=\"11\" runat=\"server\" >sdfsf</label></td><td>{0}</td></tr>",Eval("name")):""%>
<%# !string.IsNullOrEmpty(Eval("sex").ToString())?string.Format("<tr><td>{0}</td></tr>",Eval("sex")):""%>
</ItemTemplate>
<FooterTemplate></table></FooterTemplate>
</asp:Repeater>
@风行魔狼: 那就是把需要的格式什么的都放在format第一个参数就可以是吧
@佰大于: 对,就是拼接字符串
@风行魔狼: 请问这两个尖括号怎么转移呢?
其次除了这种字符串拼接方法还有其他的吗?因为替换字符中有各种控件标签,一个一个换很费时,之后也不好做修改
<% if(Eval("Scontent").toString() === "") {%> } else {%> }%>
这样写呢?
格式是错误的,请麻烦再写一遍
@佰大于:
<% if(Eval("Scontent").toString() === "") {%> <%} else {%> <td></td> <%}%> 类似这样
膜拜大佬,你数据库是怎么设计的啊
分开设计,重新建表拼起来
@佰大于: 真实表还是虚拟表?
@定不负相思懿: 混着来,大表是服务器真实表
@佰大于: 也就是所有说说日志之类的放进去大表真实表,动态是真实表,单个说说或日志从分开的虚拟表里?
@定不负相思懿:正解
Eval("name").Trim()后,再判断IsNullOrEmpty