2009-06-16 40 views
0

gridview的列之一是一个“内容”列,可以有几行文本(它可以是文字,文本框或标签)。扩大gridview的行

在“默认”模式下,我希望它只显示第一行和一个链接按钮:“(more)”或“(read)”。

点击此链接应展开栏目并显示完整内容。

这样做的最好方法是什么?

回答

0

选择内容文本的前10个字符并将其用作链接文本是更好的方法。这将减少数据的大小,从数据库中检索这样的:

SELECT ContentId, SUBSTRING(Content, 0, 10) AS Content 
FROM ContentTable; 

然后你可以使用模板列此列,其中包括标签和链接。 Lbel的描述文字,链接的细节。

<asp:TemplateColumn> 

    <ItemTemplate> 
     <asp:Label 
      Text='<%# Eval("Content") %>' 
      runat="server"/> 
     <a href='<%# Eval("ContentId", "contentdetails.aspx?id={0}") %>'>More</a> 
    </ItemTemplate> 

</asp:TemplateColumn> 
+0

我已经通过ObjectDataSource填充gridview并使用'<%#Eval(“Content”)%>'来获取完整内容。 我可以在插入内容之前修剪内容吗? – markiz 2009-06-16 12:22:07

+0

那么你有一个内容的财产?您可以在属性的getter处修剪内容。 – Canavar 2009-06-16 12:27:40

0

使用CSS的力量!

将它放在gridview行中。它自然会将行推出到您的内容的高度,或所需的行数。

<div class="toggle"> 
    <div class="toggle-header"> 
    Toggle! 
    </div> 
    <div class="toggle-height"> 
    <div class="toggle-transform"> 
     <p>2nd line of text</p> 
     <p>3rd line</p> 
     <p>4th line</p> 
     <p>etc</p> 
    </div> 
    </div> 
</div> 

,并使用该CSS ...

body { 
    font-family: sans-serif; 
} 

.toggle { 
    position: relative; 
    border: 2px solid #333; 
    border-radius: 3px; 
    margin: 5px; 
    width: 200px; 
} 

.toggle-header { 
    margin: 0; 
    padding: 10px; 
    background-color: #333; 
    color: white; 
    text-align: center; 
    cursor: pointer; 
} 

.toggle-height { 
    background-color: tomato; 
    overflow: hidden; 
    transition: max-height .6s ease; 
    max-height: 0; 
} 

.toggle:hover .toggle-height { 
    max-height: 1000px; 
} 

.toggle-transform { 
    padding: 5px; 
    color: white; 
    transition: transform .4s ease; 
    transform: translateY(-100%); 
} 

.toggle:hover .toggle-transform { 
    transform: translateY(0); 
} 

你可能想掩饰“切换”与您“(更多)”行拓展休息的一个文本框。

让我们知道它是否工作。