2010-08-12 9 views
16

Ich möchte einige meiner BoundFields im GridView-Steuerelement einen Klassennamen hinzufügen; so dass, sobald die Gridview dagetenbundenen und gerendert ist, kann ich so etwas wie erhalten:Wie füge ich einem BoundField eine CSS-Klasse hinzu, damit ich sie mit jQuery finden kann?

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

Der Zweck, so etwas zu tun, ist in der Lage sein, alle Elemente zu finden, die „Tag1“ auf diese Weise sind:

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

Also, wie kann ich diese Klasse zum BoundField hinzufügen, so dass es auf diese Weise gerendert wird?

Antwort

5

Sie können eine Zeile der Zelle CssClass Eigenschaft auf Tag1 gesetzt, wenn die erstellt der Reihe (RowCreated Ereignis).

Page.aspx:

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

-Code-Behind-Datei, Page.aspx.cs:

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

Der Code wird das class Attribut jedes td in Ihrer Tabelle zu Tag1; das Markup der gerenderten Seite wird so aussehen wie Sie suchen:

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

die ItemStyle Eigenschaft auf Ihrem Feld hinzufügen:

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

Achten Sie auf die ItemStyle CssClass Eigenschaft zu setzen, anstatt einer der anderen. Ich machte den Fehler, die ControlStyle CssClass-Eigenschaft zu setzen, und erst als ich diesen Beitrag las, erkannte ich meinen Fehler.

1

meine Antwort

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

3

Sie auf Template dann ein Label und hinzufügen Sie jede Art wollen verwenden umwandeln kann.

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

ODER

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

Es funktioniert für mich.

0

Für einen Boundfield in Code hinter dem Hinzufügen (dies VB ist, aber ähnlich für C#) versuchen:

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

Wenn Sie CssClass Daten machen wollen abhängig müßten Sie ein Template ZB:

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

MyItemTemplate implementiert ITemplate im Ordner App_Code Beispiel:

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 

Sie könnten anwenden CssCl Ass auf das Etikett direkt, aber ursprüngliche Frage hatte es auf der Zelle

Verwandte Themen