如何在GridView中为包含大量数据的字段创建个性化列?

时间:2012-04-10 14:20:51

标签: asp.net gridview dynamic-columns

我需要添加一个包含字段文本的简短版本的列。我希望如果用户将鼠标放在此文本上,则会出现带有真实大版本的工具提示。我坚持认为这是一个解决过度大细胞的网格视图失真的方法。欢迎其他解决方案。

<asp:GridView ID="GridView1" runat="server" CellPadding="4" ForeColor="#333333" 
            GridLines="None" AutoGenerateColumns="false">
            <Columns>
                <asp:BoundField DataField="DESC_CORTA" HeaderText="Sistema"  />
                <asp:BoundField DataField="ASIGNADO" HeaderText="Asignado"  />
                <asp:BoundField DataField="SOLICITANTE" HeaderText="Solicitante"  />
                <asp:BoundField DataField="FECHA_INGRESO" HeaderText="Fecha ingreso"  />
                <asp:BoundField DataField="N_SOLICITUD" HeaderText="N solicitud"  />
                <asp:BoundField DataField="TIEMPO_TOTAL" HeaderText="Tiempo total"  />
                <asp:BoundField DataField="TIEMPO_RESTANTE" HeaderText="Tiempo restante" />
                <asp:BoundField DataField="PORCENTAJE_RESTANTE" HeaderText="Porcentaje restante" />
                <asp:BoundField DataField="TIEMPO_ESPERADO" HeaderText="Tiempo esperado" />

HERE COMES THE BIG COLUMN
<asp:BoundField DataField="GLOSA_USUARIO" HeaderText="Glosa" />
            </Columns>
        </asp:GridView>

2 个答案:

答案 0 :(得分:2)

使用TemplateField并应用工具提示。

更改

<asp:BoundField DataField="GLOSA_USUARIO" HeaderText="Glosa" />

对此:

<asp:TemplateField HeaderText="Glosa">
    <ItemTemplate>
        <div title='<%# Eval("GLOSA_USUARIO") %>'>
            <%# Helpers.GeneratePreview(Eval("GLOSA_USUARIO").ToString(), 100) %></div>
    </ItemTemplate>
</asp:TemplateField>

这是具有“GeneratePreview”功能的助手类:

public static class Helpers
{
   public static string GeneratePreview(string Text, int Length)
   {
       if (Text.Length >= Length)
       {
           Text = Text.Remove(Length, Text.Length - Length);
           int CutLastSpace = Text.LastIndexOf(" ");
           Text = Text.Remove(CutLastSpace, Text.Length - CutLastSpace);
           Text = Text + "...";
       }

       return Text;
   }
}

如果您愿意,可以使用javascript获得更精美的工具提示。希望这有帮助!

祝你好运!

答案 1 :(得分:0)

是的,他们是对的你必须像他们说的那样使用模板字段。要显示花哨或良好的多线工具提示,请使用最佳工具提示(下面的链接)

<asp:TemplateField HeaderText="Glosa">
  <ItemTemplate>
      <div title='<%# Eval("GLOSA_USUARIO") %>'>
          <%# Eval("GLOSA_USUARIO")%></div>
  </ItemTemplate>
</asp:TemplateField>

http://bassistance.de/jquery-plugins/jquery-plugin-tooltip/ 要么 http://craigsworks.com/projects/simpletip/