Medo2015 Ответов: 2

Проверка нескольких текстовых полей по сравнению с datatable


У меня есть форма с несколькими текстовыми полями .. и я хочу проверить, не было ли изменено какое-либо значение с момента открытия формы .. я использовал datatable и заполнил его данными из хранимой процедуры в базе данных .. и в случае проверки в текстовом поле Код сравнивает значение между подходящим столбцом в datatabl и редактируемым текстом .. если он изменил текстовое поле, обратный цвет стал желтым. …

код отлично работает для одного текстового поля ... но так как у меня много текстовых полей, то я хочу, чтобы метод сравнивал каждое текстовое поле по его столбцу в datatable без повторения кода для каждого текстового поля по одному ... например текстовое поле txtName по сравнению с первым столбцом в datatable называется fullName и текстовое поле txtNickName сравнивается по второму столбцу под названием nickname ..... прием

Что я уже пробовал:

private void txtName_Validated(object sender, EventArgs e)
        {
            DataTable dt = Person.DETECT_CHANGES(txtName.Text, txtNickName.Text); //could be many columns here

            foreach (DataRow row in dt.Rows)
            {
                if ((txtName.Text).Trim() != row["fullName"].ToString())
                {
                    txtName.BackColor = Color.Yellow;
                    break;further
                }
                else
                {
                    txtName.BackColor = Color.White;
                }
            }

2 Ответов

Рейтинг:
2

Graeme_Grant

Этот поиск в Google должен помочь: C# в состоянии "грязного" объекта DataTable правок - поиск в Google [^]


Medo2015

Я постараюсь прийти сюда снова ... спасибо

Рейтинг:
0

Karthik_Mahalingam

Объявите все текстовые поля в TextBox[] массив и итерация для каждого значения по отношению к эталонному значению в dataTable и на основе состояния значения (текст изменен/ не изменен) измените color текстового поля.


Medo2015

Именно этого я и хочу ... не могли бы вы помочь мне с кодом, пожалуйста ?

Karthik_Mahalingam

используйте это как ссылку и попробуйте, я еще не проверял это.

 Dictionary<string, TextBox> dict = new Dictionary<string, TextBox>();
            dict.Add("fullName", TextBox1);
            dict.Add("col1", TextBox2);
            dict.Add("col2", TextBox3);

            foreach (var item in dict)
            {
                string refValue = dt.Rows[0][item.Key].ToString();
                if(item.Value.Text != refValue)
                    item.Value.BackColor = System.Drawing.Color.Yellow;
            }