2010-08-12 21 views
16

Quiero agregar un nombre de clase a algunos de mis BoundFields en el control GridView; de manera que una vez que el GridView es enlazado a datos y vuelve puedo obtener algo como:¿Cómo agrego una clase de CSS a un BoundField, para que pueda encontrarlo con jQuery?

<td class="Tag1">Some data came from data source</td> 

El propósito de hacer tal cosa es ser capaz de encontrar todos los elementos que son "Tag1" de esta manera:

var allTag1td = $('td.Tag1'); 

Entonces, ¿cómo puedo agregar esta clase al BoundField para que se represente de esta manera?

Respuesta

5

Puede establecer celular CssClass la propiedad de una fila a Tag1 cuando el jugador de la fila creada (RowCreated evento).

Page.aspx:

<asp:GridView OnRowCreated="grid_RowCreated" AutoGenerateColumns="true" runat="server" ID="grid"></asp:GridView> 

archivo de código subyacente, Page.aspx.cs:

protected void grid_RowCreated(object sender, GridViewRowEventArgs e) { 
    foreach (TableCell cell in e.Row.Cells) 
     cell.CssClass = "Tag1"; 
} 

El código se establecerá el atributo class de cada td en su mesa a Tag1; el marcado de la página representada se verá como el que usted está buscando:

<td class="Tag1"></td> 
<td class="Tag1"></td> 
... 
39

añadir la propiedad ItemStyle a su campo:

<asp:BoundField DataField="Count" HeaderText="Count"> 
    <ItemStyle CssClass="yourclass"></ItemStyle> 
</asp:BoundField> 
0

Asegúrese de establecer la propiedad ItemStyle CssClass en lugar de uno de los otros Cometí el error de establecer la propiedad CssClass ControlStyle y no fue hasta que leí esta publicación que me di cuenta de mi error.

1

mi respuesta

<asp:BoundField DataField="id" HeaderText="" SortExpression="id"> <ItemStyle Width="10%" CssClass="hide"/> <headerstyle CssClass="hide"> </headerstyle> </asp:BoundField>

3

Puede convertir a TemplateField a continuación, utilizar una etiqueta y agregar cualquier estilo que desee.

<asp:TemplateField HeaderText=""> <ItemTemplate> <asp:Label ID="Label1" runat="server" Text='<%# Eval("Field") %>' CssClass="YourStyle" /> </ItemTemplate> </asp:TemplateField>

O

<asp:TemplateField HeaderText=""> <ItemTemplate> <asp:Label ID="Label1" runat="server" Text='<%# Eval("Field") %>' Style="line-height: 1.4" /> </ItemTemplate> </asp:TemplateField>

Funciona para mí.

0

Para añadir un BoundField en código detrás (esto es VB, pero similar para C#) Proveedores:

bf = New BoundField() 
bf.DataField = "FieldName" 
bf.HeaderText = "Header" 
bf.SortExpression = "FieldName(could be different)" 
bf.ItemStyle.CssClass = "NoWrap" 
MyGrid.Columns.Add(bf) 

Si desea que los datos CssClass dependientes se necesitaría una TemplateField Ej:

tf = New WebControls.TemplateField() 
tf.HeaderText = "Whatever" 
tf.SortExpression = "Whatever" 
tf.ItemTemplate = New MyItemTemplate("DataField", "CssDataField") 
AssessmentGrid.Columns.Add(tf) 

MyItemTemplate implementa ITemplate en la carpeta App_Code Ej:

Imports Microsoft.VisualBasic 

Public Class MyItemTemplate 
    Implements System.Web.UI.ITemplate 
    'Normally Template type would be in here but we are only do Item 
    '(no edit, delete or header etc) 
    Dim DataField1 As String 'Displayed data 
    Dim DataField2 As String 'CssClass 

    Sub New(ByVal Field1 As String, ByVal Field2 As String) 
     DataField1 = Field1 
     DataField2 = Field2 
    End Sub 

    Public Sub InstantiateIn(ByVal container As System.Web.UI.Control) _ 
      Implements System.Web.UI.ITemplate.InstantiateIn 
     Dim ml As New Label() 
     ml.ID = DataField1 
     ml.Text = "" 
     ml.CssClass = "" 
     AddHandler ml.DataBinding, New EventHandler(AddressOf Item_DataBinding) 
     container.Controls.Add(l) 
    End Sub 

    Protected Sub Item_DataBinding(ByVal sender As Control, ByVal e As System.EventArgs) 
     Dim bound_value_object As Object 
     Dim data_item_container As IDataItemContainer = sender.NamingContainer 
     Dim Parent As TableCell = sender.Parent 
     Dim l As Label = sender 
     bound_value_object = DataBinder.Eval(data_item_container.DataItem, DataField1) 
     l.Text = bound_value_object.ToString 
     bound_value_object = DataBinder.Eval(data_item_container.DataItem, DataField2) 
     Parent.CssClass = bound_value_object.ToString 
    End Sub 
End Class 

Se podría aplicar CssCl culo a la etiqueta directo, pero la pregunta original lo tenía en la celda

Cuestiones relacionadas