Примените плагин JQuery DataTables к ASP GridView

Я использовал этот плагин раньше в PHP, поэтому я решил использовать его снова для моего проекта ASP.

По какой-то причине он не работает с моим элементом управления GridView.

блок javascript:

<link type="text/css" href="../scripts/demo_table.css" rel="stylesheet" />  

    <script type="text/javascript" language="javascript" src="../scripts/jquery-1.4.1.js"></script>
    <script type="text/javascript" language="javascript" src="../scripts/jquery.dataTables.js"></script>

    <script type="text/javascript" charset="utf-8">
        $(document).ready(function () {
            $(".gvv").dataTable();
        });
        </script>

Код Gridview:

<asp:GridView ID="gv" runat="server" AutoGenerateColumns="False" 
        DataKeyNames="Prop_No" DataSourceID="testtt" CssClass="gvv">

Я делаю что-то неправильно или DataTables не могут использоваться для элементов управления ASP?

Ответ 1

Проблема заключается в том, что элемент управления GridView не добавляет элемент <thead>, а просто помещает строку заголовка в раздел <body> сгенерированной таблицы, тогда как плагин Data Table требует раздел <thead> в таблице. Попробуйте использовать следующие script:

$(function () {
    $(".gvv").prepend( $("<thead></thead>").append( $(this).find("tr:first") ) ).dataTable();
});

P.S. также вы можете использовать элементы управления, которые не выполняют рендеринг с компоновкой по умолчанию, например Repeater или ListView

Ответ 2

Вы можете добавить теги thead, tbody и tfoot с помощью события GridView Prerender, попробуйте этот код

protected void GridView1_PreRender(object sender, EventArgs e)
{
  // You only need the following 2 lines of code if you are not 
  // using an ObjectDataSource of SqlDataSource
  GridView1.DataSource = Sample.GetData();
  GridView1.DataBind();

  if (GridView1.Rows.Count > 0)
  {
    //This replaces <td> with <th> and adds the scope attribute
    GridView1.UseAccessibleHeader = true;

    //This will add the <thead> and <tbody> elements
    GridView1.HeaderRow.TableSection = TableRowSection.TableHeader;

    //This adds the <tfoot> element. 
    //Remove if you don't have a footer row
    GridView1.FooterRow.TableSection = TableRowSection.TableFooter;
   }

}

И не забудьте добавить обработчик событий на исходную страницу ниже

<asp:GridView ID="GridView1" runat="server" 
  OnPreRender="GridView1_PreRender">
</asp:GridView>

Теперь вы можете просто вызвать функцию JQuery, как обычно, для рендеринга

  <script type="text/javascript" charset="utf-8">
      $(document).ready(function () {
          $(".gvv").dataTable();
      });
  </script>

Ответ 3

Пожалуйста, попробуйте ввести код ниже.    

enter image description here

enter image description here