Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Работа с данными

Страница: 1 |

 

  Вопрос: DataGridView -> DataRow.RowState Добавлено: 11.06.08 17:41  

Автор вопроса:  Shota
Идея такая: загнать данные в DataGridView и по мере редактирования/добавления/удаления этих самых данных показывать юзеру состояние строки находящееся в DataRow.RowState.
Пока придумал 2 решения, но ни одно из них не могу реализовать:
1. Подсвечивать разными цветами нетронутые, удаленные, добавленные и измененные строки.
2. добавить колонку без привязки к таблице, но чтоб в ней отображалось текстовое значение DataRowState Enumeration.

Как это можно реализовать?........

Ответить

  Ответы Всего ответов: 2  

Номер ответа: 1
Автор ответа:
 Shota



Вопросов: 22
Ответов: 52
 Профиль | | #1 Добавлено: 12.06.08 08:49
Решил обе проблемы, если кому интересно ( правда код на С шарп...... кому нужно тот поймет:) ):

Переменные уровня формы:


        ;DataGridViewCellStyle _unchanged = new DataGridViewCellStyle();
        ;DataGridViewCellStyle _modified = new DataGridViewCellStyle();
        ;DataGridViewCellStyle _detached = new DataGridViewCellStyle();
        ;DataGridViewCellStyle _deleted = new DataGridViewCellStyle();
        ;DataGridViewCellStyle _added = new DataGridViewCellStyle();


Конструктор:

        public Form1()
        {
            InitializeComponent();
            this._unchanged.BackColor = Color.White;
            this._modified.BackColor = Color.Yellow;
            this._deleted.BackColor = Color.Red;
            this._added.BackColor = Color.GreenYellow;
            this._detached.BackColor = Color.Gray;
        }


tExpDataGridView - датаГирд
colState - колонка не привязанная к данным таблицы


Событие RowPrePaint:


        private void tExpDataGridView_RowPrePaint(object sender, DataGridViewRowPrePaintEventArgs e)
        {
            if (tExpDataGridView.Rows[e.RowIndex].DataBoundItem != null)
            {
                MyDataSet.tExpRow row = (MyDataSet.tExpRow)((DataRowView)tExpDataGridView.Rows[e.RowIndex].DataBoundItem).Row;
                tExpDataGridView.Rows[e.RowIndex].ReadOnly = false;
                switch(row.RowState)
                {
                    case DataRowState.Added:
                        tExpDataGridView.Rows[e.RowIndex].DefaultCellStyle = this._added;
                        tExpDataGridView.Rows[e.RowIndex].Cells["colState"].Value = "Added";
                        break;
                    case DataRowState.Deleted:
                        tExpDataGridView.Rows[e.RowIndex].DefaultCellStyle = this._deleted;
                        tExpDataGridView.Rows[e.RowIndex].Cells["colState"].Value = ";Deleted";
                        tExpDataGridView.Rows[e.RowIndex].ReadOnly = true;
                        break;
                    case DataRowState.Detached:
                        tExpDataGridView.Rows[e.RowIndex].DefaultCellStyle = this._detached;
                        tExpDataGridView.Rows[e.RowIndex].Cells["colState"].Value = ";Detached";
                        break;
                    case DataRowState.Modified:
                        tExpDataGridView.Rows[e.RowIndex].DefaultCellStyle = this._modified;
                        tExpDataGridView.Rows[e.RowIndex].Cells["colState"].Value = "Modified";
                        break;
                    case DataRowState.Unchanged:
                        tExpDataGridView.Rows[e.RowIndex].DefaultCellStyle = this._unchanged;
                        tExpDataGridView.Rows[e.RowIndex].Cells["colState"].Value = "Unchanged";
                        break;

                }
            }
        }



Detached - видно в момент добавления новой строки, как только строка теряет фокус состояние становиться Added

Ответить

Номер ответа: 2
Автор ответа:
 Shota



Вопросов: 22
Ответов: 52
 Профиль | | #2 Добавлено: 12.06.08 08:52
Единственная проблема сортировать можно по всем колонкам таблицы кроме colState ( т.е. колонки которая показывает состояние строки )
а хотелось бы ...... если кто поможет........

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам