Ширина DataGrid не влияет на Windows Mobile. C # - PullRequest
2 голосов
/ 17 февраля 2009

Я новичок в разработке Windows Mobile и обнаружил, что когда я устанавливаю ширину с помощью DataGridTextBoxColumn, это не влияет на размер столбца DataGrid. Вот мой код:

        DataGridTableStyle tableStyle = new DataGridTableStyle();
        tableStyle.MappingName = "MainStyle";

        DataGridTextBoxColumn tbcName = new DataGridTextBoxColumn();
        tbcName.Width = 120;
        tbcName.MappingName = "Name";
        tbcName.HeaderText = "Name";
        tableStyle.GridColumnStyles.Add(tbcName);

        DataGridTextBoxColumn tbcValue = new DataGridTextBoxColumn();
        tbcValue.Width = 200;
        tbcValue.MappingName = "Value";
        tbcValue.HeaderText = "Value";
        tableStyle.GridColumnStyles.Add(tbcValue);

        // dgUserAttributes is defined as a System.Windows.Forms.DataGrid
        dgUserAttributes.TableStyles.Clear();
        dgUserAttributes.TableStyles.Add(tableStyle);            

Есть идеи?

1 Ответ

1 голос
/ 26 февраля 2009

Как Хенк Холтерман заявил, что вы должны сопоставить DataGridTableStyle с именем DataTable , привязанным к DataGrid . В качестве альтернативы вы можете установить MappingName каждого DataGridTextBoxColumn в качестве имени столбца DataColumn в связанной DataTable .

Если вы добавили DataGrid с именем dgUserAttributes в форму с именем Form1 в конструкторе форм, вы можете проверить, как DataGridTextBoxColumn width свойство изменяет ширину столбца в отображаемом DataGrid , используя код ниже.

Также убедитесь, что вы не установили значение dgUserAttributes TableStyles коллекция во время разработки, которая могла бы переопределять значения, которые вы установили программно.

    public Form1()
    {
        InitializeComponent();

        //Create In-Memory DataTable
        DataTable myTable = new DataTable();

        // Add DataColumns to the DataTable.
        DataColumn myNameColumn = new DataColumn("Name");
        myNameColumn.DataType = System.Type.GetType("System.String");
        myNameColumn.DefaultValue = "default string";
        myTable.Columns.Add(myNameColumn);
        DataColumn myValueColumn = new DataColumn("Value");
        myValueColumn.DataType = System.Type.GetType("System.String");
        myValueColumn.DefaultValue = "default string";
        myTable.Columns.Add(myValueColumn);

        //Bind DataTable to dataGrid1
        dgUserAttributes.DataSource = myTable;

        DataGridTableStyle tableStyle = new DataGridTableStyle();
        //tableStyle.MappingName = "MainStyle";
        DataGridTextBoxColumn tbcName = new DataGridTextBoxColumn();
        tbcName.Width = 12; 
        tbcName.MappingName = "Name";
        tbcName.HeaderText = "Name";
        tableStyle.GridColumnStyles.Add(tbcName);
        DataGridTextBoxColumn tbcValue = new DataGridTextBoxColumn();
        tbcValue.Width = 300;
        tbcValue.MappingName = "Value";
        tbcValue.HeaderText = "Value";
        tableStyle.GridColumnStyles.Add(tbcValue);
        // dgUserAttributes is defined as a System.Windows.Forms.DataGrid
        dgUserAttributes.TableStyles.Clear();        
        dgUserAttributes.TableStyles.Add(tableStyle);           
    }
...