2016-11-09 35 views
0

我需要檢查是否存在主從AspxGridView檢查任何行檢查任何行。檢查如果aspxgridview主從在客戶端

與主,我可以使用

grid.GetSelectedRowCount()>0 

但我怎麼能使用JS明細行檢查呢?

在此先感謝

+0

嘗試'變種selected = DetailGrid.GetSelectedKeysOnPage()'方法,返回可以在回調或回發中處理的所有關鍵字段值。 –

+0

它不起作用,它表示它沒有定義。該detailGridView沒有一個唯一的ID,因爲它是父的一部分,並有可能被多個網格 – popiandro

回答

2

做到這一點,你需要一個獨特的ClientInstanceName分配到每一個細節格,然後使用分配ClientInstanceName,這又應包括主人的網格行ID訪問客戶端的特定細節網格部分,即第一行的detailGrid_1,第二行的detailGrid_2等等。

要將ClientInstanceName分配給需要自定義Page_Init處理程序添加到詳細信息網格,在代碼隱藏該處理程序設定ClientInstanceName每一個細節的網格。

所以,網絡的定義可能看起來像:

<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> 

然後在代碼隱藏:

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); 
} 

然後在你的事件處理程序的客戶端(你沒有在你是哪個事件提試圖檢查詳細的電網有選擇的一些行),你需要獲得主電網的行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