[英]Self-referencing hierarchy in GridView
我最近读到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错误,我不知道为什么。
如果有人可以帮助我解决上面的代码,甚至为我指出一些阅读材料的方向,我将不胜感激。
RadGrid for ASP.NET AJAX支持自引用层次结构。 那可能就是你听到的。 我还没有听说过WinForms RadGridView中的相同功能。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.