Самореферентная иерархия в GridView - PullRequest
0 голосов
/ 13 октября 2009

Недавно я прочитал, что самореферентная иерархия теперь поддерживается RadrikridGridView от Telerik. К сожалению, мне не удалось найти какие-либо демонстрации, учебники или примеры кода для просмотра. Доступна ли эта информация?

Вот мой текущий код, с которым я работаю:

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 - Row1 - Row2 - Row3 Ряд 2 Ряд 3 Ряд 4 - ряд 4

Должно быть:

Строка 1 - Ряд 2 - 3 ряд Ряд 4

Кроме того, другая проблема связана с частью кода, которую я закомментировал. Этот код вызывает ошибку NullReferenceException, и я не знаю, почему.

Если бы кто-нибудь мог мне помочь с приведенным выше кодом или даже указать мне какой-нибудь материал для чтения, я был бы очень признателен.

1 Ответ

0 голосов
/ 14 октября 2009

Самостоятельные иерархии поддерживаются в RadGrid для ASP.NET AJAX . Это может быть то, что вы слышали. Я не слышал об этой функции в WinForms RadGridView.

...