2010-08-12 106 views
16

我想为GridView控件中的一些BoundFields添加一个类名称;这样,一旦在GridView的数据绑定和渲染我能获得类似:如何将CSS类添加到BoundField,以便我可以使用jQuery找到它?

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

做这样的事的目的是为了能够找到所有都是“Tag1中”的元素以这样的方式

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

那么,我该如何将这个类添加到BoundField中,以便它以这种方式呈现?

回答

5

您可以将行的单元格CssClass属性设置为Tag1当行的创建(RowCreated事件)。

Page.aspx

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

代码隐藏文件,Page.aspx.cs

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

的代码将设置每个tdclass属性,在表到Tag1;所呈现的页面的标记看起来就像你正在寻找一个:

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

的ItemStyle属性添加到您的领域:

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

确保设置ItemStyle CssClass属性,而不是其中一个。我犯了设置ControlStyle CssClass属性的错误,直到我阅读这篇文章才意识到我的错误。

1

我的回答

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

3

可以转换为模板列,然后使用一个标签,并添加任何你想要的风格。

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

OR

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

这对我的作品。

0

对于后面的代码添加一个BoundField(这是VB,但对于C#相似)尝试:

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

如果你想的CssClass依赖于数据,你需要一个模板列如:

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

MyItemTemplate实现了Itemplate App_Code文件夹中,例如:

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 

您可以应用CssCl屁股的标签直接,但原来的问题有它的单元格

相关问题