2009-10-13 86 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