Как добавить Ext.Net.columnModel в существующую Ext.Net.GridPanel программно?

#c# #asp.net #ext.net

#c# #asp.net #ext.net

Вопрос:

Я пытаюсь создать GridPanel программно, используя LinqDataSource, как показано в примерах.

Пока я вижу свою пустую сеточную панель без каких-либо данных внутри, потому что в моей сеточной панели отсутствует columnModel, используемая для отображения данных.

Поскольку я не могу найти правильный метод для добавления columnModel в GridPanel, я должен спросить вас.

Мой код, который используется для создания моей панели сетки, и все остальное находится под ней.

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace IntraNET_Prototype
{
    public partial class MitarbeiterUndTelefonliste : System.Web.UI.Page
    {
        public LinqDataSource MitarbeiterDataSource = new LinqDataSource();
        public Ext.Net.GridPanel MitarbeiterGridPanel = new Ext.Net.GridPanel();
        public Ext.Net.Store MitarbeiterStore = new Ext.Net.Store();
        public Ext.Net.JsonReader MitarbeiterJSONReader = new Ext.Net.JsonReader();
        public Ext.Net.ColumnModel MitarbeiterColumnModel = new Ext.Net.ColumnModel();

        public MitarbeiterUndTelefonliste()
        {
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            MitarbeiterDataSource.ID = "MitarbeiterDataSource";
            MitarbeiterDataSource.ContextTypeName = "MitarbeiterlisteEntities";
            MitarbeiterDataSource.TableName = "Mitarbeiterliste";

            MitarbeiterGridPanel.ID = "MitarbeiterGridPanel";
            MitarbeiterGridPanel.Title = "MitarbeiterListe";
            MitarbeiterGridPanel.AutoWidth = true;
            MitarbeiterGridPanel.Frame = true;
            MitarbeiterGridPanel.Height = 570;

            MitarbeiterStore.ID = "MitarbeiterStore";
            MitarbeiterStore.DataSource = MitarbeiterDataSource;

            MitarbeiterColumnModel.ID = "MitarbeiterColumnModel";

            MitarbeiterColumnModel.Columns.Add(new Ext.Net.Column() { DataIndex = "primaerschluessel", Header = "Index", Width = 50 });

            MitarbeiterJSONReader.Fields.Add(new Ext.Net.RecordField() { Name = "primaerschluessel" });

            MitarbeiterGridPanel.Store.Add(MitarbeiterStore);

            this.Form.Controls.Add(MitarbeiterGridPanel);
        }
    }
}
  

Заранее спасибо за любую помощь! Я ценю любые предложения, критику и любую помощь!

Ответ №1:

Вы не можете назначить некоторую модель столбца сетке. Потому что это свойство доступно только для чтения.

Вы должны использовать MitarbeiterGridPanel .columnModel.Columns.Add() вместо MitarbeiterColumnModel .Columns.Add()

Комментарии:

1. Спасибо за ваш ответ, это ключ! Но только для моего понимания, не немного ли странно идти этим путем вместо добавления модели столбцов, как вы должны делать наоборот в дизайне .aspx ?!

2. Это сделано потому, что Ext.NET и ExtJS не дают никакой настройки columnModel. Они предоставляют вам пользовательские столбцы, но не пользовательскую columnModel . И, по моему опыту, это никогда не вызывало проблем.