Как проверить столбец таблицы данных с 3 полями базы данных, объединенными вместе - PullRequest
0 голосов
/ 01 июля 2011

По существу, у меня есть сетевое представление данных, которое я извлекаю из базы данных, и 3 столбца поля базы данных, которые я объединяю в столбец в сетевом хранилище данных.

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

Я могу проверить столбец толькоодно поле базы данных

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

Вот как я называю свою базу данных в сетке данных

пс.позиция int

protected void BindStaff()
{
  SqlConnection conn = new SqlConnection("Data Source=.\\SQLEXPRESS;Initial Catalog=BRandCom;Integrated Security=True");
  SqlDataAdapter adapter = new SqlDataAdapter("SELECT StaffID, (StaffName+','+ StaffNRIC+','+ Position + ';')as StaffDetail, yearIn, age, address, email, stayIndicator FROM StaffBook", conn);
  DataSet ds = new DataSet();
  adapter.Fill(ds);
  DGVStaffBook.DataSource = ds.Tables[0];
}

это столбец, о котором я говорю, что могу проверить (только один столбец поля базы данных)

private void DGVStaffBook_CellEndEdit(object sender, DataGridViewCellEventArgs e)
    {
      if (e.RowIndex >= 0 && e.ColumnIndex >= 0)
      {

        int stayInd;

       if (e.ColumnIndex == 6)
        {
          stayInd = Convert.ToInt32(DGVStaffBook.Rows[e.RowIndex].Cells[e.ColumnIndex].Value);

          if (stayInd != 0 && stayInd != 1)
          {
            MessageBox.Show("Please enter only 1 or 0");
            DGVStaffBook.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = DBNull.Value;
          }
          else
            return;

        }
      }

    }

я пробую это для позиции, но это даетошибка: введенная строка неверного формата

  private void DGVStaffBook_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex >= 0 && e.ColumnIndex >= 0)
            {

                             if (e.ColumnIndex == 1)
                {
                    String[] position = null;
                    position = Convert.ToString(DGVStaffBook.CurrentRow.Cells[1].Value).Split(',');

                    if (int.Parse(position[2]) != 1 && int.Parse(position[2])!=2 ) 
                    {
                        MessageBox.Show("Please Update number type accordingly:" + Environment.NewLine + "1  - High rank only " + Environment.NewLine + "2  -Low Rank" );
                    }
                    else 
                        return;

                }
            }

        }

1 Ответ

1 голос
/ 01 июля 2011

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

Может быть, вы также можете попробовать сделать 3 соответствующих свойства и объединить их через разделитель, такой как |, который не появится в ваших полях через четвертое свойство. Теперь, когда вы получите то же самое значение, разделенное на |, выполните проверки, а также присвойте эти соответствующие значения 3 соответствующим свойствам. (Но я бы не рекомендовал это) Field1 Field2 Field3

StaffDetails - Field1 + "|" + Field2 + "|" + Field3

Затем используйте e.FormattedValue.ToString () и разделите его на |, чтобы получить строку [] из 3, теперь проверьте

Также вы можете взглянуть на создание столбца MaskedTextBox, это также поможет, но опыт пользователя будет жалким

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