2011-06-16 32 views
1

我在我的項目中有3個嵌套的ASPxGridViews。一個是主柵格,另一個是與主/外鍵相連的細節柵格。當我單擊詳細網格中的新按鈕時,表單中的列將完全變爲空白。但是我想要一些有ParentID的列被自動選中,因爲我已經在它的主網格中選擇了它。這裏有一個具體的例子:在ASPxGridView中自動選擇列

我有一個顯示公司的主網格。該網格具有顯示屬於這些公司的部門的詳細網格。我選擇了其中一個公司和部門,它出現在細節網格中。然後我用新按鈕創建一個新的部門數據。但在表單中,公司組合框列是空白的,應自動選擇。我必須再次選擇這個組合框中的同一個公司。

我在DevExpress論壇中找不到任何有關此問題的內容。我很感激你的幫助。

+0

就是它的價值在RowUpdating事件中?這會起作用嗎? – Ruben 2011-06-16 14:48:04

回答

1

更新:使用CellEditorInitialize顯示:

protected void gvDepartments_CellEditorInitialize(object sender, ASPxGridViewEditorEventArgs e) 
{ 
    var grid = sender as ASPxGridView; 

    if (grid == null || !grid.IsNewRowEditing)return; 
    if (!e.Column.FieldName.Equals("Company")) return; 

    (e.Editor as ASPxComboBox).SelectedValue = grid.GetMasterRowKeyValue(); 
} 

gridView.GetMasterRowKeyValue()在細節電網給你他的主電網KeyValue。您可以在HtmlRowCreatedCellEditorInitialize事件使用上的細節電網獲得主鍵字段(公司ID在yourcase),並已選定在編輯表單組合框,如下圖所示:

有關設置
protected void gvDepartments_HtmlRowCreated(object sender, ASPxGridViewTableRowEventArgs e) 
{ 
    if (e.RowType == GridViewRowType.EditForm) 
    { 
     var gridView = sender as ASPxGridView; 
     var companyID = gridView.GetMasterRowKeyValue(); 
     var ddlCompany = gridView.FindEditFormTemplateControl("ddlCompany") as ASPxComboBox; 
     ddlCOmpany.SelectedValue = companyID; 
    } 
} 
+0

我這樣做了,但現在有一個錯誤。當我點擊新按鈕它說「對象引用未設置爲對象的實例」。我認爲ddlCompany是空的。如何克服這一點? – 2011-06-16 20:17:00

+0

您是否使用EditFormTemplate?或內聯編輯?正如我所提到的,如果您正在使用內聯編輯字段,則需要使用CellEditorInitialize。我更新了答案來說明它 – Akhil 2011-06-16 20:28:03

+0

它的工作原理,但仍有一些小問題。 (e.Editor as ASPxComboBox).SelectedIndex = grid.GetMasterRowKeyValue();不匹配,因爲SelectedIndex是對象,GetMasterRowKeyValue是整數。所以我把(int)放在grid.GetMasterRowKeyValue前面。但是,組合框顯示錯誤的公司,通常是擁有最後一個ID的公司。 – 2011-06-16 21:19:49