GridView 中的自引用层次结构

发布于 2024-08-07 10:18:31 字数 3243 浏览 5 评论 0原文

我最近读到,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 -- 父级1 2 -- 1 -- 1 -- 1.1 -- 子级1 3 -- 1 -- 1 -- 1.2 -- 子级2 4 -- 1 -- 4 -- 2.0 -- ParentLevel2

在我当前的代码中,这显示为:

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

应该是:

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

另外,另一个问题是我注释掉的那部分代码。这段代码会导致抛出 NullReferenceException 错误,我不知道为什么。

如果有人可以帮助我解决上面的代码,或者甚至为我指出一些阅读材料的方向,我将非常感激。

I recently read that self-referencing hierarchy is now supported by Telerik's radGridView. Unfortunately, I have been unable to locate any demos, tutorials, or sample code to look at. Is this information available?

Here is my current code that I'm working with:

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;

}

Sample data would look like this:

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

With my current code, this displays as:

Row 1
-- Row1
-- Row2
-- Row3
Row 2
Row 3
Row 4
-- Row 4

It should be:

Row 1
-- Row 2
-- Row 3
Row 4

Also, another problem is with the portion of code I have commented out. This code causes a NullReferenceException error to be thrown and I don't know why.

If anyone could help me out with the above code, or even point me in the direction of some reading material, I would be very grateful.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

橘寄 2024-08-14 10:18:31

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

Self-referencing hierarchies are supported in the RadGrid for ASP.NET AJAX. That may be what you heard. I haven't heard of the same feature in the WinForms RadGridView.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文