2010-03-25 3 views
0

UpdatePanel 내에서 페이징 기능이있는 GridView를 구현하려고합니다. 첫 번째 클릭을하면 모든 것이 효과적입니다. 페이징이 시작되고 다음 데이터 집합이 빠르게로드됩니다. 그러나 다른 데이터 페이지에 대한 링크를 클릭하면 다음 오류가 발생합니다.ASP.Net GridView UpdatePanel 페이징이 두 번째 클릭시 오류 발생

Sys.WebForms.PageRequestManagerServerErrorException : 서버에서 요청을 처리하는 동안 알 수없는 오류가 발생했습니다. 서버에서 반환 된 상태 코드이었다 : 12,030

영문 코드

<asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
    <contenttemplate> 
     <asp:GridView ID="GridView1" runat="server" CellPadding="2" 
       AllowPaging="true" AllowSorting="true" PageSize="20" 
       OnPageIndexChanging="GridView1_PageIndexChanging" 
       OnSorting="GridView1_PageSorting" 
       AutoGenerateColumns="False"> 
      <Columns> 
       <asp:BoundField DataField="ActivityLogID" HeaderText="Activity Log ID" SortExpression="ActivityLogID" /> 
       <asp:BoundField DataField="ActivityDate" HeaderText="Activity Date" SortExpression="ActivityDate" /> 
       <asp:BoundField DataField="ntUserID" HeaderText="NTUserID" SortExpression="ntUserID" /> 
       <asp:BoundField DataField="ActivityStatus" HeaderText="Activity Status" SortExpression="ActivityStatus" /> 
      </Columns> 
     </asp:GridView> 
    </contenttemplate> 
</asp:UpdatePanel> 

코드

private void bindGridView(string sortExp, string sortDir) 
    { 
     SqlCommand mySqlCommand = new SqlCommand(sSQL, mySQLconnection); 
     SqlDataAdapter mySqlAdapter = new SqlDataAdapter(mySqlCommand); 
     mySqlAdapter.Fill(dtDataTable); 

     DataView myDataView = new DataView(); 
     myDataView = dt.DefaultView; 

     if (sortExp != string.Empty) 
     { 
      myDataView.Sort = string.Format("{0} {1}", sortExp, sortDir); 
     } 

     GridView1.DataSource = myDataView; 
     GridView1.DataBind(); 

     if (mySQLconnection.State == ConnectionState.Open) 
     { 
      mySQLconnection.Close(); 
     } 

    } 
     protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e) 
    { 
     GridView1.PageIndex = e.NewPageIndex; 
     bindGridView(); 
    } 
    protected void GridView1_PageSorting(object sender, GridViewSortEventArgs e) 
    { 

     bindGridView(e.SortExpression, sortOrder); 

    } 

두 번째 클릭에 오류의 원인이 무엇인지에 대한 단서를

뒤에?

답변

0

UpdatePanel 외부에있는 페이지에서 첫 번째 클릭 후 변경 중이거나 변경하려고 시도하면 두 번째 클릭에 대해 다른 점이 있지만 외부 UpdatePanel이 있기 때문에 호출이 다시 첫 번째 값을 얻었습니다. 업데이트 값을 얻지 못했습니다. 첫 번째 값을 다시 얻습니다. -> 두 번째 클릭시 오류가 발생합니다.

아마도 당신은 올바른 부분을 UpdatePanel을 가지고 올바르게 렌더링해야합니다. 이 컨트롤로 변경하고 사용하는 모든 것을 UpdatePanel 안에 보관하십시오.

예를 들어 sSQL은 어디에 저장합니까? 그 변화? 클릭 할 때 다른 값 변경이있을 수 있습니까?

+0

sSQL 값과 연결 개체는 bindGridView 함수 내에서 정의되고 빌드됩니다. 난 그냥 게시 된 코드 밖으로 왼쪽 ... 나는 bindGridView 함수 안에 데이터 테이블의 선언을 이동했지만, 도움이되지 않았다. 또한 업데이트 패널과 gridview를 제외하고 페이지에서 모든 것을 제거했지만 완전히 렌더링 또는 호출 호출 완료에 문제가있는 것 같습니다 – joe

+0

ViewState를 이동합니까? 예를 들어 페이지의 아래쪽으로 이동하여? 일반적으로 어떤 모듈에서든 변경하고 viewstate를 좋게 만들지 않으면 updatePanel에서 두 번째로 얻지 못합니다 - 그렇다면 몇 가지 트릭을 말해주십시오. – Aristos

0

아마 당신은 올바른 부분을 UpdatePanel에서 렌더링해야하는 데이터가 있습니다. UpdatePanel 내부에서이 컨트롤로 변경하고 사용하는 모든 것을 유지하십시오.

관련 문제