При обновлении gridview получить все измененные ячейки в текстовом поле + не редактировать? - PullRequest
0 голосов
/ 07 марта 2012

Я пытаюсь добавить в текстовое поле все значения, измененные в ячейках + другие, которые не редактируются:

table name : info
columns : Name|Subname|Age|Birthday|Code

Я использую при обновлении вида сетки

for(int i =0;i<4;i++){
if(e.OldValues[i].ToString() != e.NewValues[i].ToString())
{
Textbox1.text = GridView1.HeaderRow.Cells[i].Text + " " + e.OldValues[i].ToString() + " edited with " + e.NewValues[i].ToString();
}
  1. Это не работает. Я получаю информацию только из 1 отредактированной ячейки, если я редактирую 2 ячейки из строки, я получаю случайную информацию о ячейке, я имею в виду, если я редактирую Name и Sub Name, я получаю имя старое значениеи новое значение вместо получения обоих.
  2. Я хочу добавить + другие значения, которые не редактируются.

спасибо

Ответы [ 2 ]

1 голос
/ 07 марта 2012

Вы можете использовать LINQ для получения необходимой информации:

var changed = e.NewValues.Cast<DictionaryEntry>()
    .Where(entry => entry.Value != e.OldValues[entry.Key])
    .Select(entry => String.Format("{0} was edited with {1}",entry.Key,entry.Value));
var notChanged = e.NewValues.Cast<DictionaryEntry>()
    .Where(entry  => entry.Value == e.OldValues[entry.Key])
    .Select(entry => String.Format("{0} was not changed",entry.Key));

TxtChanged.Text = String.Join(Environment.NewLine, changed);
TxtUnchanged.Text = String.Join(Environment.NewLine, notChanged);
0 голосов
/ 07 марта 2012

Сейчас вы не «добавляете» в текстовое поле, вы перезаписываете его с помощью «=»

Textbox1.text = GridView1.HeaderRow.Cells[i].Text + " " + e.OldValues[i].ToString() + " edited with " + e.NewValues[i].ToString();

Попробуйте это:

Textbox1.text += GridView1.HeaderRow.Cells[i].Text + " " + e.OldValues[i].ToString() + " edited with " + e.NewValues[i].ToString();

Изменено "=" для "+ =".

А для неотредактированных значений что-то вроде? :

    if(e.OldValues[i].ToString() != e.NewValues[i].ToString())
    {
        Textbox1.text += GridView1.HeaderRow.Cells[i].Text + " " + e.OldValues[i].ToString() + " edited with " + e.NewValues[i].ToString();
    }
    else
    {
        Textbox2.text += GridView1.HeaderRow.Cells[i].Text + " " + e.OldValues[i].ToString() + " didn't change";
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...