Как добавить класс CSS в BoundField, чтобы я мог найти его с помощью jQuery? - PullRequest
20 голосов
/ 12 августа 2010

Я хочу добавить имя класса для некоторых из моих BoundFields в элементе управления GridView;так что, как только GridView будет привязан к данным и отрендерен, я смогу получить что-то вроде:

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

Цель такого действия состоит в том, чтобы найти все элементы, которые являются «Tag1», таким образом:

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

Итак, как я могу добавить этот класс в BoundField, чтобы он отображался таким образом?

Ответы [ 8 ]

40 голосов
/ 16 декабря 2011

Добавьте свойство ItemStyle к вашему полю:

<asp:BoundField DataField="Count" HeaderText="Count">
    <ItemStyle CssClass="yourclass"></ItemStyle>
</asp:BoundField>
15 голосов
/ 12 августа 2010

Разве вы не можете напрямую установить свойство itemstyle вашего ограниченного поля в aspx?

(TableItemstyle имеет свойство CssClass)

<asp:BoundField ItemStyle-CssClass="Tag1"/>

См:

5 голосов
/ 12 августа 2010

Вы можете установить для свойства 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";
}

Код установит атрибут class каждого td в вашей таблице на Tag1;разметка отображаемой страницы будет выглядеть так, как вы ищете:

<td class="Tag1"></td>
<td class="Tag1"></td>
...
3 голосов
/ 11 июля 2014

Вы можете преобразовать в TemplateField, затем использовать метку и добавить любой стиль, который хотите.

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

ИЛИ

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

У меня это работает.

1 голос
/ 05 июля 2013

мой ответ

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

0 голосов
/ 08 апреля 2015

Для добавления ограниченного поля в коде (это 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 E.g:

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

Вы можете применить CssClass к метке напрямую, но оригинальный вопрос был в ячейке

0 голосов
/ 15 июня 2013

Убедитесь, что установлено свойство ItemStyle CssClass, а не одно из других.Я сделал ошибку, установив свойство ControlStyle CssClass, и только когда я прочитал это сообщение, я осознал свою ошибку.

0 голосов
/ 12 августа 2010

Я сделал что-то подобное в RowCreated_Event.Я должен был стилизовать клетки в соответствии с их значениями.

http://msdn.microsoft.com/de-de/library/system.web.ui.webcontrols.gridview.rowcreated.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...