2012-02-24 17 views
1

ページングと並べ替えが有効になっているGridView Webコントロールがあります。私はデータソースをSqlDataSourceにバインドしました。ページインデックスまたはソートを変更しようとすると、「GridViewの発生イベント[Sorting/PageIndexChanging]が処理されませんでした」というエラーが表示されます。 SqlDataSourceは、これらのイベントを処理するのに十分なものではありませんか?GridViewページングとソート

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<%@language = "C#" Debug="true" src="ServerCode/Default.cs" Inherits="Home.Default" %> 
<html> 
<head> 
    <title>APTEIT Data Preview</title> 
</head> 
<body> 
    <form id = "mainFrm" runat = "server"> 
     <div id = "headersDiv"> 
      <asp:Table id = "headerTbl" runat = "server"> 
      </asp:Table> 
     </div> 
     <div id = "dataDiv"> 
      <asp:GridView id = "dataTbl" runat = "server" 
       ShowHeader="false" 
       AllowPaging="true" 
       GridLines="None" 
       AlternatingRowStyle="altRow" 
       PagerStyle="pager" 
       PageSize="50" 
       > 
      </asp:GridView> 
     </div> 
    </form> 
</body> 
</html> 

あなたはGridViewを再バインドする必要が分離コード

SqlDataSource sqlData = new SqlDataSource("Hidden for security reasons"); 
Select(DataSourceSelectArguments.Empty); 
dataTbl.DataSource = sqlData; 
dataTbl.DataBind(); 
headerTbl.Rows.Add(new TableRow()); 
+0

FYI: "大量のデータを扱う場合、データプレゼンテーションコントロールの既定のページングオプションは、データのサブセットのみが表示されていても、すべてのレコードを取得するので不適切です。カスタムページングに切り替える必要があります。 http://www.asp.net/web-forms/tutorials/data-access/paging-and-sorting/efficiently-paging-through-large-amounts-of-data-cs –

+0

データグリッドページングを有効にします。 – BizApps

+0

ここにgridviewのaspxソースを投稿してお手伝いします。 – jmaglio

答えて

3

private void BindData() 
{ 
    SqlDataSource sqlData = new SqlDataSource("Hidden for security reasons"); 
    Select(DataSourceSelectArguments.Empty); 
    dataTbl.DataSource = sqlData; 
    dataTbl.DataBind(); 
    headerTbl.Rows.Add(new TableRow()); 
} 

protected void dataTbl_PageIndexChanging(object sender, GridViewPageEventArgs e) 
{ 
    dataTbl.PageIndex = e.NewPageIndex; 
    BindData(); 
} 

マークアップではGridViewに追加します。

OnPageIndexChanging="dataTbl_PageIndexChanging" 

それが動作するはずです。

+0

それは働いた。ありがとう!ソート機能についても同様の処理を行う必要がありますか? – steventnorris

+0

正直言って、私はこのような仕分けをしなかったし、私は知らないかもしれないが、おそらくはい。バインドする前にデータをソートする必要があるかもしれません。なぜなら、 'GridView'がこれを単独で行うのかどうかわからないからです。やってみて :)。 – Episodex

+0

もう一つ、マークアップで作成した 'SqlDataSource'を使用して、' GridView'をコードの後ろにバインドすると、追加コードなしでソートしてページアウトすることができると思います。 – Episodex

関連する問題