2014-07-07 3 views
1

그래서 RadGrid 컨트롤을 사용하여 "Displaying 1-20 of 100"과 같은 것을 표시하려고합니다. 나는 RadGrid1_PageIndexChanged 이벤트에 다음 코드를 넣어 :이 전체 다시 게시하지 않고 레이블이 업데이트 치울하지 않습니다처럼RadGrid의 현재 페이지 통계 표시

int showingRowsFrom = ((e.NewPageIndex + 1) * rgResults.PageSize) - rgResults.PageSize + 1; 
int showingRowsTo; 

if ((e.NewPageIndex + 1) == rgResults.PageCount) 
{ 
    showingRowsTo = GridSource.Tables[0].Rows.Count; 
} 
else 
{ 
    showingRowsTo = (e.NewPageIndex + 1) * rgResults.PageSize; 
} 

string rowCount = string.Format("Displaying {0}-{1} of {2}", showingRowsFrom, showingRowsTo, GridSource.Tables[0].Rows.Count); 
lblResultsCountBottom.Text = lblResultsCountTop.Text = rowCount; 

불행하게도, 그것은 보인다. 어떻게이 일을 할 수 있습니까? 나는 클라이언트 쪽에서 그것을 시도하고 이것에도 문제가 있었다. 그것은 $ find가 정의되지 않았다고 말합니다. 여기

$(document).ready(function() { 
    var grid = $find("<%=rgResults.ClientID%>"); 
    var mtv = grid.get_masterTableView(); 
    var pageIndex = mtv.get_currentPageIndex(); 
    alert(pageIndex); 
}); 

는 radgrid 코드입니다 :

<radG:RadGrid ID="rgResults" runat="server" AllowMultiRowSelection="True" AllowPaging="True" 
     AllowSorting="True" EnableAJAX="False" GridLines="None" OnItemCommand="rgResults_ItemCommand" OnItemDataBound="rgResults_ItemDataBound" 
     PageSize="20" 
     Skin="Default" Width="100%" OnPageIndexChanged="rgResults_PageIndexChanged" OnSortCommand="rgResults_SortCommand" OnInit="rgResults_Init" OnPreRender="rgResults_PreRender"> 
    <ClientSettings ApplyStylesOnClient="True"> 
    </ClientSettings> 
    <ItemStyle CssClass="griditemtext" /> 
    <HeaderStyle CssClass="gridheadertext" /> 
    <FooterStyle CssClass="gridfootertext" /> 
    <AlternatingItemStyle CssClass="gridalternetitemtext" /> 
    <PagerStyle CssClass="gridpagertext" Mode="NumericPages" /> 
    <CommandItemStyle CssClass="gridcommandtext" /> 
    <SelectedItemStyle CssClass="gridselecteditemtext" /> 
    <MasterTableView AutoGenerateColumns="False" 
     DataKeyNames="Article Number" Font-Bold="False" Font-Italic="False" CommandItemDisplay="None" Font-Overline="False" 
     Font-Strikeout="False" Font-Underline="False" GridLines="Both"> 
     <ExpandCollapseColumn Visible="False"> 
      <HeaderStyle Width="19px" /> 
     </ExpandCollapseColumn> 
     <RowIndicatorColumn Visible="False"> 
      <HeaderStyle Width="20px" /> 
     </RowIndicatorColumn> 
     <PagerStyle Mode="NumericPages" /> 
     <Columns> 
     </Columns> 
    </MasterTableView> 
</radG:RadGrid> 

그들은 모두 같은 방식으로 일을하고 있기 때문에 나는 모든 컬럼에 대한 코드를 게시하지 않습니다, 그러나 여기에서 요점이야 - P

답변

0

글쎄, 내 질문에 대한 답변을 찾은 것 같습니다. 나는 여러 가지 다른 것들을 시도했지만, 잘못된 버전을 언급하고있는 것처럼 보였다.

내가 사용하던 :

Telerik.WebControls.GridBoundColumn

대신 예를 들어

Telerik.Web.UI.GridBoundColumn

의.

이렇게 변경하면 $ find 및 기타 아약스 작업이 시작됩니다. 어쩌면 나는 그것을 설명 할 수있는 비 AJAX RadGrid를 사용하고 있었을 것입니다 ...

어쨌든, @rdmptn 덕분에 모든 도움을 얻을 수 있습니다!

3

레이블이 업데이트되지 않은 경우 AJAX가 있으므로 부분적인 포스트 백 응답에 레이블을 포함해야합니다. 이미 UpdatePanel에 없으면 하나에 포장하십시오. UpdateMode가 Always (기본값)이면 즉시 작동합니다. 조건부로 설정하면 Update() 메서드를 호출해야합니다. 또한 레이아웃을 손상시키지 않도록 RenderMode를 인라인으로 설정할 수도 있습니다.

클라이언트 쪽에서는 MS AJAX 스크립트 cotnrols를 사용할 수 없으므로 Sys.Application.Load 이벤트를 사용합니다. 따라서 $ find() 문제가 발생합니다. 예 :

function alertMe() { 
    var grid = $find("<%=rgResults.ClientID%>"); 
    var mtv = grid.get_masterTableView(); 
    var pageIndex = mtv.get_currentPageIndex(); 
    alert(pageIndex); 

Sys.Application.remove_load(alertMe); 
} 
Sys.Application.add_load(alertMe); 
+0

이 상황에서 도움이되지는 못했지만 확실한 정보! $ find 함수가 작동하도록 스크립트 관리자를 페이지로 드래그해야한다는 것을 알았습니다. 불행히도, 내 표 변수는 여전히 null이오고 있지만, 올바른 방향으로 나아가는 단계입니다. – Relevant

+1

나는 MS AJAX와 관련하여 스크립트 관리자없이 작업하는 방법을 처음부터 어떻게 관리했는지조차 모릅니다. 필자 샘플에서 그리드 변수가 적절한 참조를 얻지 못하게하는 유일한 방법은 자바 스크립트 오류 또는 rgResults 그리드가 보이지 않는 것입니다 (예 : Visible = false). 어느 경우에도 해당되지 않는 경우 문제를 표시 할 수있는 전체 코드를 게시하면 문제가 발생할 수 있습니다. – rdmptn

+0

나는 페이지에서 AJAX를 찾지 못했습니다. 나는이 프로젝트가 처음인데 조금 기발한 것임을 알고있다. 코드 샘플을 사용하여 문제를 파악할 수있었습니다 (2 개의 AJAX 함수가 작동하지 않을 때 좀 더 명확 해졌습니다 : -p). RadScriptManager를 사용해야하는 것일 수도 있습니다. 그러나 그것은 모든 종류의 문제를 일으키는 것으로 보입니다.표준 스크립트 관리자와 함께 제공 한 코드를 사용하면 $ find는 null을 반환합니다. alertMe() 함수에 들어갑니다. – Relevant