【问题标题】:Sorting Inside datagridview in c#在 c# 中对 datagridview 内部进行排序
【发布时间】:2013-07-31 01:22:33
【问题描述】:

我在 c# 中有 datagridview

我在 datagridview 中填充了数据。

我在 datagridview 中创建了序列号以及其他列。

如果我点击序列号头,序列号被排序。 如果我在其他列中排序,序列号也会被排序。

如果我单击其他列标题,如何避免对序列号进行排序。

我已经给出了下面的代码

         dsstock = new DataSet();
        dsstock = fetchDataSetValues(statement);
      //  grdStock.Rows.Clear();
        if (dsstock.Tables[0].Rows.Count > 0)
        {
            grdStock.Columns.Add("Sl. No.", "Sl. No.");
            grdStock.Columns[0].Width = 80;

            grdStock.Columns.Add("ItemID", "Item ID");
            grdStock.Columns[1].Width =300;
            grdStock.Columns.Add("ItemName", "Item Name");
            grdStock.Columns[2].Width = 600;
            grdStock.Columns.Add("ItemQuantity", "Item Quantity");
            grdStock.Columns[3].Width = 150;
            int row = dsstock.Tables[0].Rows.Count - 1;

            for (int r = 0; r <= row; r++)
            {
                grdStock.Rows.Add();
                grdStock.Rows[r].Cells[0].Value = r + 1;
                grdStock.Rows[r].Cells[1].Value = dsstock.Tables[0].Rows[r].ItemArray[0];
                grdStock.Rows[r].Cells[2].Value = dsstock.Tables[0].Rows[r].ItemArray[1];
                grdStock.Rows[r].Cells[3].Value = dsstock.Tables[0].Rows[r].ItemArray[2];

            }
        }

谢谢

钱德兰

【问题讨论】:

  • 序列号从 1 开始计数,直到您的网格中的项目数?!因此,与其添加一个您不想排序的递增数字,不如更改 rowHeader 文本?看看this question
  • 这不是依赖于 SQL Select 中的“ORDER BY”吗?

标签: c# datagridview


【解决方案1】:

如果我理解正确,您需要一种方法来保持行编号相同,而不管那里有哪些数据(就像 Excel 一样)。如果您为每个项目/行分配序列号,这对我来说似乎很奇怪,但无论如何,Show row number in row header of a DataGridView 有一个简单的解决方案。 (你可以在https://stackoverflow.com/a/14915110/116891看到截图。)

private void dgGrid_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
{
    var grid = sender as DataGridView;
    var rowIdx = (e.RowIndex + 1).ToString();

    var centerFormat = new StringFormat() 
    { 
        // right alignment might actually make more sense for numbers
        Alignment = StringAlignment.Center, 
        LineAlignment = StringAlignment.Center
    };

    var headerBounds = new Rectangle(e.RowBounds.Left, e.RowBounds.Top, grid.RowHeadersWidth, e.RowBounds.Height);
    e.Graphics.DrawString(rowIdx, this.Font, SystemBrushes.ControlText, headerBounds, centerFormat);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-22
    • 2015-06-28
    • 2011-09-30
    • 2015-10-26
    • 2013-02-05
    • 2012-05-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多