2016-11-09 5 views
0

Master-Detail AspxGridView에 체크 된 행이 있는지 확인해야합니다.aspxgridview Master-Detail에 클라이언트 측에서 행이 체크되어 있는지 확인하십시오.

마스터와

나는

grid.GetSelectedRowCount()>0 

을 사용할 수 있습니다하지만 그것은 JS를 사용하여 세부 행과 어떻게 확인할 수 있습니까?

+0

시도를'VAR selected = DetailGrid.GetSelectedKeysOnPage()'메서드는 콜백이나 포스트 백에서 처리 할 수있는 모든 키 필드 값을 반환합니다. –

+0

작동하지 않는다. 정의되지 않았다. detailGridView는 부모의 일부이며 여러 개의 격자가있을 수 있으므로 하나의 고유 ID가 없습니다 – popiandro

답변

2

는 이러한 목표를 달성하기 위해 사전에

덕분에 각 세부 그리드에 고유 한 ClientInstanceName를 할당하고 다시 마스터의 그리드 행 ID를 포함해야 할당 된 ClientInstanceName를 사용하여 클라이언트 측에서 특정 세부 그리드에 액세스해야 첫 번째 행에 대한 detailGrid_1, 두 번째 행에 대한 detailGrid_2 등이 있습니다.

각 세부 그리드에 ClientInstanceName을 할당하려면 코드 숨김에서 해당 처리기의 Set ClientInstanceName으로 세부 그리드에 사용자 지정 Page_Init 처리기를 추가해야합니다.

protected void detailGrid_OnInit(object sender, EventArgs e) { 
    ASPxGridView detailGridView = (ASPxGridView)sender; 
    GridViewDetailRowTemplateContainer templateContainer = 
        (GridViewDetailRowTemplateContainer)detailGridView.NamingContainer; 
    detailGridView.ClientInstanceName = string.Format("detailGrid_{0}", 
              templateContainer.VisibleIndex); 
} 

그런 다음 이벤트 처리기에서 클라이언트 측에서 (당신이 된 이벤트에 언급하지 않았다 : 코드 숨김에서 다음

<dx:ASPxGridView ID="masterGrid" runat="server" ClientInstanceName="masterGrid"> 
... 
<Templates> 
    <DetailRow> 
     <dx:ASPxGridView ID="detailGrid" runat="server" OnInit="detailGrid_OnInit"> 
     ... 
     </dx:ASPxGridView> 
    </DetailRow> 
</Templates> 
... 
</dx:ASPxGridView> 

: 같은

그래서, 웹 정의는 보일 수 있습니다 세부 그리드에 선택된 행이 있는지 확인하려는 경우) 마스터 그리드의 행 ID를 가져 와서 세부 그리드에 대한 클라이언트 인스턴스 이름을 수동으로 구성해야합니다 (예 :

eval('detailGrid_' + master_grids_row_id). 

또는 JS의 핸들러에 기성 형식으로 전달할 수 있습니다.

올바른 detailGrid 클라이언트 인스턴스 이름이 있으면 다음 JS 메소드를 호출 할 수 있습니다

detailGrid_XX.GetSelectedKeysOnPage(); 

몇 가지 코드 샘플이 DX 지원 문서를 참조하십시오 https://www.devexpress.com/Support/Center/Question/Details/Q450479

HTH

+1

좋습니다! 그것이 도움이 되었기 때문에 다행 :). – andrews