GridView中的自引用层次结构

时间:2009-10-13 17:38:26

标签: c# winforms gridview telerik hierarchy

我最近读到Telerik的radGridView现在支持自引用层次结构。不幸的是,我无法找到任何演示,教程或示例代码来查看。这些信息是否可用?

这是我正在使用的当前代码:

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

使用我当前的代码,显示为:

第1行 - 第1行 - 第2行 - 第3行 第2行 第3行 第4行 - 第4行

应该是:

第1行 - 第2行 - 第3行 第4行

另外,另一个问题是我已注释掉的代码部分。此代码导致抛出NullReferenceException错误,我不知道原因。

如果有人可以帮我解决上述代码,或者甚至指出我的阅读材料,我将非常感激。

1 个答案:

答案 0 :(得分:-1)

RadGrid for ASP.NET AJAX支持自引用层次结构。那可能就是你所听到的。我没有在WinForms RadGridView中听说过相同的功能。