web-dev-qa-db-ja.com

JqueryDataTablesプラグインを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>

グリッドビューコード:

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

何か間違ったことをしているのですか、それともDataTablesをASPコントロールに使用できないのですか?

13
Pod Mays

問題は、GridViewコントロールが<thead>要素を追加せず、ヘッダー行を生成されたテーブルの<body>セクションに配置するだけであるのに対し、データテーブルプラグインはテーブルに<thead>セクションを必要とすることです。次のスクリプトを使用してみてください。

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

P.S.また、RepeaterやListViewなどのデフォルトのレイアウトではレンダリングされないコントロールを使用することもできます

39

GridView Prerenderイベントを使用して、theadtbody、およびtfootタグを追加できます。このコードを試してください

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" CssClass="gvv"
      OnPreRender="GridView1_PreRender">
</asp:GridView>

これで、通常どおりJQuery関数を呼び出してレンダリングできます。

$(document).ready(function () {
    $(".gvv").dataTable();
});
16
Prasad Jadhav

以下のコードをお試しください。

enter image description here

enter image description here

1
Nimesh