Заморожена последняя строка DataGridView как сумма столбцов?

Можно ли сделать последнюю строку DataGridView в качестве суммы столбцов и что последняя строка всегда будет отображаться/заморожена?

Ответ 1

Решение на самом деле очень простое, и вам просто нужно немного подумать за пределами коробки.

Обычно, как только данные загружаются в ваш вид сетки, в нижней части находится темно-серый ряд:

Вы можете использовать это пространство в своих интересах. Все, что вам нужно сделать, это перетащить несколько меток на вашу форму, размещенную прямо внутри вашего вида сетки, с нанесенным фоном:

В вашем коде добавьте такой метод:

void UpdateTotal(Label Label, int Number)
{
    // Called from another thread; facilitate safe cross-thread operation
    if(this.InvokeRequired)
        this.Invoke(new Action<Label, int>(UpdateTotal), new object[] {Label, Number});

    // Called from this thread or invoked
    else
        // Format the number with a thousands separator
        Label.Text = Number.ToString("N0");
}

Затем, когда вы обновляете представление сетки, вызовите UpdateTotal(labelPostsAffected, 2000);, используя имя вашей метки и сумму, которую вы вычислили (или вычислите в методе).

Результат выглядит примерно так:

Ответ 2

Да, это возможно. Во-первых, вам нужно пройти через сетку и вычислить сумму требуемых столбцов после вычисления сумм вам нужно создать новый DataGridRow и заполнить его вычисленными значениями, установите для свойства Frozen DataGridRow значение True, а затем добавьте новый DataGridRow в Datagridview. Значения столбцов сумм в DataGridView

Вместо создания нового DataGridRow вы можете просто добавить новую строку с суммированными значениями в свой источник данных, а затем найти последнюю строку в своем DataGrid и установить свойство этой строки Frozen = True

Ответ 3

Для этого вам нужно установить атрибут ShowFooter True

а затем в коде позади добавить ваше значение желания в нижнем колонтитуле


   <asp:GridView ID="grdList" runat="server" ShowFooter="True" >
   // other part of gridview codes e.g columns or blah blah blah
   </asp:GridView>

   // in code-behind
   int totalValue = 2 * 10;
   grdList.Columns[2].FooterText = totalValue.ToString();