C # необходимо добавить данные в поле при касании записи - PullRequest
1 голос
/ 28 февраля 2011

Я построил форму, в которой слева располагаются списки и справа для каждого поля в источнике данных набор текстовых полей.

Когда пользователь нажимает на запись вслева он перемещается к этой записи, чтобы они могли изменять поля справа.До этого момента все работало нормально.

Проблема в том, что у каждого пользователя есть уникальный идентификационный номер, и как только он начинает печатать в полях записи, я хочу заполнить скрытое поле их идентификационным номером, чтобы при сохраненииЯ знаю, кто коснулся этой записи.

Я не могу найти подходящее событие для обработки этого метода.Я не использую сетку данных, я просто перетащил элементы из окна источников данных в форму соответственно.CurrentChanged и CurrentItemChanged отключаются при переключении между элементами в списке, чтобы они не отражали нужное мне поведение.

Есть мысли?

1 Ответ

0 голосов
/ 28 февраля 2011

Я чувствую, что это несколько уродливый ответ, но он выполняет работу без каких-либо серьезных усилий. Как только все проверено и вызвана функция EndEdit источника привязки, вы можете проверить DataSet на наличие измененных строк.

Before_Update обрабатывает эту логику и просматривает каждую строку, если были внесены изменения, внося необходимые изменения в столбцы перед вызовом UpdateAll.

Проверка на измененные строки - http://msdn.microsoft.com/en-US/library/czb9z269%28v=VS.80%29.aspx

    // Save event
    private void clientBindingNavigatorSaveItem_Click(object sender, EventArgs e)
    {
        this.Validate();
        this.clientBindingSource.EndEdit();

        Before_Update();

        this.tableAdapterManager.UpdateAll(this.dP_TestDataSet);
    }

    // Place logic in here to modify records if they are changed
    private void Before_Update()
    {
        if (dP_TestDataSet.HasChanges())
        {
            for (int tRow = 0; tRow < dP_TestDataSet.Tables["Client"].Rows.Count; tRow++)
            {
                // Modification Logic
                if (dP_TestDataSet.Tables["Client"].Rows[tRow].RowState == DataRowState.Modified)
                {
                    dP_TestDataSet.Tables["Client"].Rows[tRow]["userID"] = Program.SYSNG.UserID;
                }

                // Addition Logic
                if (dP_TestDataSet.Tables["Client"].Rows[tRow].RowState == DataRowState.Added)
                {
                    // Addition Logic
                    // ...
                }
                // Other RowStates such as Deleted, Detatched or Unchanged work here too
            }
        }
    }

Это успешно решает мою проблему, хотя я надеюсь, что кто-то придет, чтобы превзойти этот ответ. Я чувствую, что выполняю дополнительную работу, которую фреймворк спрятал где-то под простынями, и надеюсь, что кто-нибудь сможет дать мне представление об этой функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...