如何在不使用设计器的情况下将列添加到Infragistics UltraGrid

时间:2016-06-10 15:31:11

标签: c# infragistics ultragrid

我在Visual Studio 2015中遇到了Infragistics UltraGrid设计器,因为当我尝试添加和定义列而不绑定数据时,它一直在抛出错误。我甚至明确地选择不绑定数据,但无论如何它都会抛出错误。过了一会儿,我放弃了,现在我试图在C#中手动添加列,而不依赖于设计师。

我试图找到在UltraGrid中添加列的方法,而不依赖于设计器,我找不到有用的数据。我试过在Infragistics 2015 v2 Documentation寻找" UltraGrid"和" UltraGrid Column"他们没有依赖UltraGrid设计师创建列的任何内容。

有没有人知道如何在不依赖UltraGrid设计器的情况下向UltraGrid添加新列?

1 个答案:

答案 0 :(得分:2)

我想我自己已经找到了这个问题的答案,如果我发布了我在这里发现的内容,我认为这会对某些人有所帮助。

<强> 1。首先......通过添加和定义列来构建标题

<强> 2。接下来,添加数据

第3。最后,绑定数据。

//Be sure to include this heading:
using Infragistics.Win.UltraWinGrid;

public class ClassName{

    // 1. Make the Headers by adding and defining columns.
    private static DataTable MakeTableHeaders()
    {
        DataTable myDataTable = new DataTable("My Table");
        // Declare variables for DataColumn and DataRow objects.
        DataColumn column;

        // Properties:
        // column.DataType   =  set data type (System.Int32, System.String, etc...)
        // column.ColumnName =  set column key (it MUST be unique) (String)
        // column.Caption    =  set the string to be visible for column header. (String)
        // column.ReadOnly   =  set whether the column is editable or not. (Boolean)
        // column.Unique     =  set whether or not values in the column must be unique.
        //                      Unique values = each cell must be different each other.
        //                      (Boolean)


        //// Program ID
        //// Caption "ID"
        column = new DataColumn();
        column.DataType = System.Type.GetType("System.Int32");
        column.ColumnName = "ID";
        column.Caption = "ID";
        column.ReadOnly = true;
        column.Unique = true;
        // Adds the column to the programTable.
        myDataTable.Columns.Add(column);

        //// Program Name
        //// Caption "Program"
        column = new DataColumn();
        column.DataType = System.Type.GetType("System.String");
        column.ColumnName = "Program";
        column.Caption = "Program";
        column.ReadOnly = true;
        column.Unique = false;
        // Adds the column to the programTable.
        myDataTable.Columns.Add(column);

        // Add the rest of the necessary columns.
        // ....

        // When completed, return the table.
        return myDataTable;
    }

    // 2. Next, add data.
    public static DataSet loadData()
    {
        DataTable myDataTable = MakeTableHeaders();

        // Add a new empty data row to our data model.
        DataRow theDataRow = myDataTable.NewRow();

        // Add data
        theDataRow[0] = 0;
        theDataRow[1] = "Program Name";

        // Add the DataRow to the table.
        myDataTable.Rows.Add(theDataRow);

        // Don't forget to accept changes,
        // or the data may not be retained.
        myDataTable.AcceptChanges();

        // Create a new DataSet.
        gridDataSet = new DataSet();

        // Add the table to DataSet.
        gridDataSet.Tables.Add(myDataTable);

        // Return the DataSet.
        return gridDataSet;
    }

    // 3. Finally, bind data.
    // Do it in the construct of your class
    public ClassName()
    {
        // Use the UltraGrid name you assigned to
        // your UltraGrid.
        ugMyUltraGrid.DataSource = loadData();
    }

    ugMyUltraGrid_InitializeLayout(object sender, Infragistics.Win.UltraWinGrid.CellEventArgs)
    {
        // This is used to place columns in specific place.
        int headerPosition = 0;

        // Set cell editability
        // Activation.ActivateOnly = The context in the cell can be selected, but cannot be edited.
        // Activation.AllowEdit = Allows the cell to be edited.
        // Activation.Disabled = Disables the cell.
        // Activation.NoEdit = Only allows the cell to be activated.
        col.CellActivation = Activation.ActivateOnly;

        // Hide all columns
        col.Hidden = true;

        // Program ID
        column = "ID";
        ugColumn = e.Layout.Bands[parent].Columns[column];
        e.Layout.Bands[parent].Columns[column].Header.Caption = "ID";
        e.Layout.Bands[parent].Columns[column].Header.VisiblePosition = headerPosition++;
        e.Layout.Bands[parent].Columns[column].Width = 50;
        // To size it to a fixed column width, use this instead:
        // e.Layout.Bands[parent].Columns[column].MinWidth = e.Layout.Bands[parent].Columns[column].MaxWidth = 50;

        // Program Name
        column = "Program";
        e.Layout.Bands[parent].Columns[column].Header.Caption = "Project";
        e.Layout.Bands[parent].Columns[column].Header.VisiblePosition = headerPosition++;
        e.Layout.Bands[parent].Columns[column].Width = 150;
        // To size it to a fixed column width, use this instead:
        // e.Layout.Bands[parent].Columns[column].MinWidth = e.Layout.Bands[parent].Columns[column].MaxWidth = 150;
    }
}

你有它。 : - )

如果您遇到问题,请告诉我,然后我会尽力帮助您。