2012-02-24 6 views
1

페이징 및 정렬이 가능한 GridView 웹 컨트롤이 있습니다. 데이터 소스를 SqlDataSource에 바인딩했습니다. 페이지 인덱스 또는 정렬을 변경하려고하면 "GridView 이벤트 [정렬/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> 

코드 숨김

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

데이터 그리드 페이징을 true로 설정합니다. – BizApps

+0

우리가 당신을 도울 수 있도록 여기에 gridview에 대한 aspx 소스를 게시하십시오. – jmaglio

답변

3

당신은 GridView를 리 바인드해야합니다 : 마크 업에서

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'를 코드 배후에 바인딩한다면, 추가 코딩없이 "아웃 오브 박스 (out of the box)"를 정렬하고 페이징해야 할 것이라고 생각합니다. – Episodex

관련 문제