【问题标题】:Need help in arranging Columns in a Multiband Infragistics UltrawinGrid在 Multiband Infragistics UltrawinGrid 中安排列时需要帮助
【发布时间】:2012-07-03 12:49:55
【问题描述】:

我有一个有 4 个波段的网格,并且波段 [3] 中的列的排列顺序与其父波段不同。我的主要要求是安排 Band[3] 列。 这是“导出到 Excel”代码的一部分。表格中已经显示了网格。 我尝试了以下方法-

    private UltraGrid rearrangeCol(UltraGrid grid)
    {
        int bandCount = grid.DisplayLayout.Bands.Count;
        int band = 0;
        List<String> colPos = new List<string>();
        for (int i = grid.DisplayLayout.Bands[band].Columns["EndurEndInv"].Index; i < grid.DisplayLayout.Bands[band].Columns.Count; i++)
        {
            colPos.Add(grid.DisplayLayout.Bands[band].Columns[i].Key);
        }
        band++;
        while (band < bandCount)
        {
            int initialColPos = grid.DisplayLayout.Bands[band].Columns["EndurEndInv"].Index;
            for (int i = initialColPos, j = 0; i < grid.DisplayLayout.Bands[band].Columns.Count && j < colPos.Count; i++, j++)
            {
                if(!grid.DisplayLayout.Bands[band].Columns[i].Key.Equals(colPos[j], StringComparison.InvariantCulture))
                {
                    grid.DisplayLayout.Bands[band].Override.AllowColSwapping = Infragistics.Win.UltraWinGrid.AllowColSwapping.WithinBand;
                    int xcngPos = grid.DisplayLayout.Bands[band].Columns[colPos[j]].Index;
                    grid.DisplayLayout.Bands[band].Columns.Insert(i, "Temp");
                    grid.DisplayLayout.Bands[band].Columns[xcngPos + 1].Swap(grid.DisplayLayout.Bands[band].Columns[i]);
                    grid.DisplayLayout.Bands[band].Columns.Remove("Temp");
                    grid.DisplayLayout.Bands[band].Override.AllowColSwapping = Infragistics.Win.UltraWinGrid.AllowColSwapping.Default;

                }
                else
                    continue;
            }
            band++;

        };
        return grid;
    }

实际上,当我使用 SWAP 时,没有任何反应,键、索引保持不变。 有没有更好的办法?

【问题讨论】:

    标签: c# infragistics ultrawingrid


    【解决方案1】:

    是的,要重新排列到您需要处理的列的位置

    grid.DisplayLayout.Bands[index].Columns[colName].Header.VisiblePosition = newPos;
    

    不需要交换列位置,只需重新排列标题位置。

    下面这段代码没有测试过,我作为例子写

        private UltraGrid rearrangeCol(UltraGrid grid)
        {
            int bandCount = grid.DisplayLayout.Bands.Count;
            int band = 1;
    
            UltraGridBand b0 = grid.DisplayLayout.Bands[0];
            while (band < bandCount)
            {
                UltraGridBand b = grid.DisplayLayout.Bands[band]
                for (int i = b0.Columns["EndurEndInv"].Index; i < b0.Columns.Count; i++)
                {
                    string colKey = b0.Columns[i].Key;
                    if(b.Columns.Exists(colKey))
                        b.Columns[colKey].Header.VisiblePosition = 
                                       b0.Columns[colKey].Header.VisiblePosition;
                }
                band++;
            }
            return grid;
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-20
      • 2012-11-14
      • 1970-01-01
      • 1970-01-01
      • 2012-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多