C# 如果列数据超过一个设置的记录,如何在列数据上设置省略号

C# 如果列数据超过一个设置的记录,如何在列数据上设置省略号,c#,asp.net,gridview,C#,Asp.net,Gridview,如何在数据列上设置省略号 我的GridView中有以下边界字段: <asp:BoundField DataField="Provider" HeaderText="Provider" ItemStyle-VerticalAlign="Top" ItemStyle-CssClass="hideText" ItemStyle-Width="100" /> 如何修改代码,使“提供程序”列只显示前3条记录,然后显示。。。如果有更多的记录返回 我使用了以下CSS,但它不适合我: .hideT

如何在数据列上设置省略号

我的GridView中有以下边界字段:

<asp:BoundField DataField="Provider" HeaderText="Provider" ItemStyle-VerticalAlign="Top" ItemStyle-CssClass="hideText" ItemStyle-Width="100" />
如何修改代码,使“提供程序”列只显示前3条记录,然后显示。。。如果有更多的记录返回

我使用了以下CSS,但它不适合我:

.hideText {
    overflow: hidden; 
    text-overflow: ellipsis; 
    white-space: nowrap;        
}
更新至:

<asp:TemplateField>
    <HeaderTemplate>
        <asp:Label runat="server" ID="lblProvider" Text="Provider" />
    </HeaderTemplate>
    <ItemTemplate>
        <asp:Label runat="server" ID="lblPro" Text='<%#Eval("Provider")%>' ToolTip='<%#Eval("Provider")%>' CssClass="hideText" />
    </ItemTemplate>
</asp:TemplateField>

.hideText  {
    width:50px;
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
 }
TD扩展得很长,HTML源代码显示:


您似乎正在修改它,但无论如何都无法将其存储回数据库,因此我只能像这样处理它,除非他们需要一个选项来查看整个数据

我在这个编辑器中编写了所有这些c代码,所以可能会有一些小问题,让我们称之为psuedo代码吧

string provider = item["Provider"].ToString().Replace("#", "\n").TrimStart(';');
string[] providerListing = provider.Split(new[]{";"}, StringSplitOptions.RemoveEmptyEntries));
if(providerListing.Length > 3)
{
    //Make an array of the first 3 providers
    string[] firstProviders = new string[3];
    Array.Copy(providerListing, firstProviders, 3);
    //Reconcatenate with ; and add ellipsis
    provider = String.Join(";",firstProviders)+"...";
}

如果他们确实需要查看整个数据,我会添加另一个名为FullProviders的列或类似的列来查询。

您似乎正在修改此列,无法将其存储回数据库,因此我只会这样处理,除非他们需要一个选项来查看整个数据

我在这个编辑器中编写了所有这些c代码,所以可能会有一些小问题,让我们称之为psuedo代码吧

string provider = item["Provider"].ToString().Replace("#", "\n").TrimStart(';');
string[] providerListing = provider.Split(new[]{";"}, StringSplitOptions.RemoveEmptyEntries));
if(providerListing.Length > 3)
{
    //Make an array of the first 3 providers
    string[] firstProviders = new string[3];
    Array.Copy(providerListing, firstProviders, 3);
    //Reconcatenate with ; and add ellipsis
    provider = String.Join(";",firstProviders)+"...";
}
如果他们确实需要查看整个数据,我会添加另一个名为FullProviders的列或类似的内容来查询;仅当以下属性为真时才有效:

必须指定元素的宽度。 元素必须设置溢出:隐藏和空白:nowrap。改变你的css如下

.hideText  {
    width:120px;
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
 }
这是工作票

更新:

这是完整的TemplateField定义。在TemplateField中定义一个div,并用css属性修饰省略号

 <asp:TemplateField HeaderText="Provider Name">
     <ItemTemplate>
          <div style="width: 100px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;">
               <asp:Label ID="lblEllipsis" runat="server" Text='<%#Eval("Provider") %>' ToolTip='<%#Eval("Provider") %>'></asp:Label>
          </div>
      </ItemTemplate>
 </asp:TemplateField>
下面是我在本地gridview中尝试此操作时的样子

文本溢出:省略号;仅当以下属性为真时才有效:

必须指定元素的宽度。 元素必须设置溢出:隐藏和空白:nowrap。改变你的css如下

.hideText  {
    width:120px;
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
 }
这是工作票

更新:

这是完整的TemplateField定义。在TemplateField中定义一个div,并用css属性修饰省略号

 <asp:TemplateField HeaderText="Provider Name">
     <ItemTemplate>
          <div style="width: 100px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;">
               <asp:Label ID="lblEllipsis" runat="server" Text='<%#Eval("Provider") %>' ToolTip='<%#Eval("Provider") %>'></asp:Label>
          </div>
      </ItemTemplate>
 </asp:TemplateField>
下面是我在本地gridview中尝试此操作时的样子



他们可以在datagrid中修改该值吗?他们可以在datagrid中修改该值吗?假设我想让用户将鼠标悬停在上面,并在警报或其他内容中显示完整列表吗?在这里,您必须隐藏FullProviders列,但在必要时您可以处理显示该列。谢谢。所以我知道你说这是psuedo代码,但是没有找到providerListing.Count:/它是长度,而不是Count。还有一件事。。。Array.CopyproviderListing,firstProviders,3;正在给我一个错误:/因此,假设我想让用户悬停在上方,并在警报或其他内容中显示完整列表?这就是您必须隐藏FullProviders列的地方,但您可以在必要时处理显示。谢谢。所以我知道你说这是psuedo代码,但是没有找到providerListing.Count:/它是长度,而不是Count。还有一件事。。。Array.CopyproviderListing,firstProviders,3;给了我一个错误,这很有效。因为它是一个数据字段,我如何允许用户将鼠标悬停在上面并显示带有全文的警报?>我将使用带有标签的templatecolumn,而不是BoundColumn。标签的属性将是Text=,我现在正在测试它。非常感谢。在这种情况下,我可以使用JQuery/CSS定制工具提示:+1-顺便说一下,我发现这个答案很有用。为什么数据不能显示在标记中?任何显示完整提供程序列表的解决方案都必须在HTML中的某个地方显示该信息,否则您将不得不使事情变得相当复杂。@SearchForKnowledge抱歉,我出去吃午饭了。试试我更新的代码,如果仍然不适合你,请告诉我。太棒了。因为它是一个数据字段,我如何允许用户将鼠标悬停在上面并显示带有全文的警报?>我将使用带有标签的templatecolumn,而不是BoundColumn。标签的属性将是Text=,我现在正在测试它。非常感谢。在这种情况下,我可以使用JQuery/CSS定制工具提示:+1-顺便说一下,我发现这个答案很有用。为什么数据不能显示在标记中?任何显示完整提供程序列表的解决方案都必须在HTML中的某个地方显示该信息,否则您将不得不使事情变得相当复杂。@SearchForKnowledge抱歉,我出去吃午饭了。尝试我的更新代码,如果仍然不适合您,请告诉我。