2009-10-13 90 views
0

我最近讀到Telerik的radGridView現在支持自引用層次結構。不幸的是,我一直無法找到任何演示,教程或示例代碼來查看。這些信息是否可用?GridView中的自引用層次結構

這裏是我的工作我當前的代碼:

private void SetupElementsGrid(){ 
radGvElements.Columns.Clear(); 
radGvElements.MasterGridViewTemplate.Columns.Add(new GridViewTextBoxColumn("ElementID")); 
radGvElements.MasterGridViewTemplate.Columns.Add(new GridViewTextBoxColumn("ProtocolTemplateID")); 
radGvElements.MasterGridViewTemplate.Columns.Add(new GridViewTextBoxColumn("ParentElementID")); 
radGvElements.MasterGridViewTemplate.Columns.Add(new GridViewTextBoxColumn("ElementNumber")); 
radGvElements.MasterGridViewTemplate.Columns.Add(new GridViewTextBoxColumn("ElementDesc")); 

radGvElements.Columns["ElementID"].IsVisible = false; 
radGvElements.Columns["ProtocolTemplateID"].IsVisible = false; 
radGvElements.Columns["ParentElementID"].IsVisible = false; 

radGvElements.Columns["ElementNumber"].HeaderText = "Element Number"; 
radGvElements.Columns["ElementDesc"].HeaderText = "Element Description"; 

radGvElements.MasterGridViewTemplate.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill; 

GridViewTemplate childTemplate = new GridViewTemplate(); 
childTemplate.Columns.Add(new GridViewTextBoxColumn("ElementID")); 
childTemplate.Columns.Add(new GridViewTextBoxColumn("ProtocolTemplateID")); 
childTemplate.Columns.Add(new GridViewTextBoxColumn("ParentElementID")); 
childTemplate.Columns.Add(new GridViewTextBoxColumn("ElementNumber")); 
childTemplate.Columns.Add(new GridViewTextBoxColumn("ElementDesc")); 

//childTemplate.Columns["ElementID"].IsVisible = false; 
//childTemplate.Columns["ProtocolTemplateID"].IsVisible = false; 
//childTemplate.Columns["ParentElementID"].IsVisible = false; 

//childTemplate.Columns["ElementNumber"].HeaderText = "Element Number"; 
//childTemplate.Columns["ElementDesc"].HeaderText = "Element Description"; 

childTemplate.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill; 

if(radGvElements.MasterGridViewTemplate.ChildGridViewTemplates.Count == 0) 
{     
    radGvElements.MasterGridViewTemplate.ChildGridViewTemplates.Add(childTemplate); 
} 

GridViewRelation relation = new GridViewRelation(radGvElements.MasterGridViewTemplate); 
relation.ChildTemplate = childTemplate; 
relation.RelationName = "ParentChild"; 
relation.ParentColumnNames.Add("ElementID"); 
relation.ChildColumnNames.Add("ParentElementID"); 
radGvElements.Relations.Add(relation); 

ProtocolTemplate = (ProtocolTemplate)ProtocolTemplatesBindingSource.CurrencyManager.List[ProtocolTemplatesBindingSource.CurrencyManager.Position]; 
ElementsBindingSource.DataSource = ProtocolTemplate.Elements; 
radGvElements.DataSource = ElementsBindingSource; 

radGvElements.DataSource = ElementsBindingSource; 
childTemplate.DataSource = ElementsBindingSource; 

}

的樣本數據是這樣的:

ElementID - ProtocolTemplateID - ParentElementID - ElementNumber - - ElementDesc 1 - 1 - 1 - 1.0 - ParentLevel1 2 - 1 - 1 - 1.1 - ChildLevel1 3 - 1 - 1 - 1.2 - ChildLevel2 4 - 1 - - 4 - 2.0 - P arentLevel2

隨着我當前的代碼,這顯示爲:

行1 - ROW1 - ROW2行 - ROW3 行2 行3 第4行 - 行4

它應該是:

行1 - 行2 - 行3 第4行

此外,另一個問題是我已經註釋掉了部分代碼。此代碼導致拋出NullReferenceException錯誤,我不知道爲什麼。

如果有人能夠幫助我解決上述問題,或者甚至將我指向某些閱讀材料的方向,我將非常感激。

回答

0

想通了。一切都很好。

-1

RadGrid for ASP.NET AJAX支持自引用分層結構。這可能是你聽到的。我還沒有聽說過WinForms RadGridView中的相同功能。

+0

嗨凱文,這裏是我找到了有關WinForms GridView的自引用層次結構的部分:http://www.telerik.com/products/winforms/gridview.aspx。這是頁面層次結構部分的一個簡短的簡介。 – Sesame 2009-10-14 14:14:19