asp.net - cómo envolver su texto en el límite de Gridview
wrap boundfield (3)
Esta pregunta ya tiene una respuesta aquí:
Tengo una mesa, en la mesa hay un par de botones y una Gridview. Estoy tratando de ajustar el texto en uno de los boundfield
de Gridview. Intenté configurar RowStyle
Wrap="true"
en las propiedades de Gridview y establecí el ItemStyle
Wrap="true"
y el Width
en las propiedades de boundfield. Pero no funcionó. ¿Alguien puede ayudarme?
Lo siguiente es mi aspx
.
<table align="center" border="0" cellpadding="0" cellspacing="2" >
<tr>
<td></td>
<td align="right">
<asp:Button ID="btnAdd" runat="server" Text="Add Subscription"
onclick="btnAdd_Click" CausesValidation="False" />
</td>
</tr>
<tr>
<td colspan="2">
<p align="center" style="font-family: Arial, Helvetica, sans-serif; font-size: 14px" >
<asp:Label ID="Label1" runat="server" Text=""></asp:Label>
</p>
</td>
</tr>
<tr>
<td align="left" colspan="2">
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataKeyNames="SubscriptionID,UserID"
DataSourceID="SqlDSEmailSubscriptions" Width="90%" CellPadding="4"
EnableViewState="False" AllowPaging="True">
<Columns>
<asp:TemplateField HeaderText="SubscriptionName" SortExpression="SubscriptionName">
<ItemTemplate>
<asp:LinkButton ID="lbtnSubscription" runat="server" CausesValidation="false"
Text=''<%# Eval("SubscriptionName")%>'' OnClick="lbtnSubscription_Click">
</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="SubscriptionName" HeaderText="SubscriptionName"
SortExpression="SubscriptionName" Visible="false" />
<asp:BoundField DataField="SubscriptionID" HeaderText="SubscriptionID"
ReadOnly="True" SortExpression="SubscriptionID" />
<asp:BoundField DataField="ProductList" HeaderText="ProductList"
SortExpression="ProductList" />
<asp:BoundField DataField="DivisionList" HeaderText="DivisionList"
SortExpression="DivisionList" />
<asp:BoundField DataField="DisciplineList" HeaderText="DisciplineList"
SortExpression="DisciplineList" />
<asp:BoundField DataField="UserID" HeaderText="UserID" ReadOnly="True"
SortExpression="UserID" Visible="false" />
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDSEmailSubscriptions" runat="server"
ConnectionString="<%$ ConnectionStrings:SPRConnectionString %>"
SelectCommand="SELECT [SubscriptionID], [SubscriptionName], [ProductList], [DivisionList], [DisciplineList], [UserID] FROM [sprEmailSubscriptions] WHERE ([UserID] = @UserID) ORDER BY [SubscriptionName]">
<SelectParameters>
<asp:SessionParameter Name="UserID" SessionField="userID" Type="Int32" />
</SelectParameters>
</asp:SqlDataSource>
</td>
</tr>
</table>
Sí, puede analizarlo por cada "x" caracteres, pero tal vez es mejor solución ponerlo en el encabezado de las columnas para que sea de tamaño fijo y definir el ajuste "verdadero".
con esa opción obtendrá el mismo tamaño de cuadrícula cada vez y una mejor y más clara interfaz de usuario.
Use el código:
<asp:BoundField DataField:="Your_data_field" HeaderText="Your_text" sordExpression="Your_sort_expression" ItemStyle-wrap="true" ItemStyle-with="50" />
Envolviendo texto en una columna de gridview con longitud fija.
Primero haga la columna en gridview, donde el texto debe ser envuelto como ItemTemplate
.
Esto se puede hacer por:
- Seleccionar gridview-smart tag> editar columna
- Seleccione la columna del cuadro inferior izquierdo titulada como Selectedfields
- Haga clic en "Convertir este campo en TemplateField"> Aceptar
En la fuente verá el siguiente código:
<asp:TemplateField HeaderText="name" SortExpression="name">
<EditItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text=''<%# Bind("name")%>''></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text=''<%# Bind("name") %>''></asp:Label>
</ItemTemplate>
</asp:TemplateField>
Proporcione el límite de ancho a la columna en píxeles como:
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text=''<%# Bind("name") %>'' Width="200px"></asp:Label>
</ItemTemplate>
Ahora los estilos deben ser agregados:
Si se va a aplicar el page_load()
del texto en la columna a todas las columnas o a la vista de cuadrícula completa, escriba el siguiente código en el evento page_load()
:
protected void Page_Load(object sender, EventArgs e)
{
GridView1.Attributes.Add("style", "word-break:break-all; word-wrap:break-word");
}
Si el ajuste del texto en la columna debe aplicarse solo a una columna particular de la vista de cuadrícula, escriba el siguiente código en el evento GridView1_RowDataBound()
:
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.Cells[0].Attributes.Add("style", "word-break:break-all;word-wrap:break-word;");
}
}
Verifica el número de celda de la vista de grilla.
¡Trabajo hecho!
Usar una div en una plantilla de artículo funciona Gr8
<ItemTemplate>
<div style="word-wrap: break-word; width: 530px;>
<asp:Label ID="lblTermName" runat="server" Text=''<%# Eval("TermName") %>'' />
</div>
</ItemTemplate>