如何将3个数据库字段组合在一起验证datagridview列
本文关键字:在一起 验证 datagridview 组合 字段 3个 数据库 | 更新日期: 2023-09-27 18:01:03
基本上我有一个数据网格视图,我从数据库中检索它,并将其中3个数据库字段列组合到数据网格视图中的一列中。
但现在问题来了,我需要进行更新,但在此之前,我需要在单击更新按钮之前验证用户所编辑的内容,但我不知道如何在数据网格视图中的同一列中验证它们。
我能够验证一个只有一个数据库字段的列
p.s我正在datagridview中进行编辑和更新,我需要验证3数据库字段列。
这就是我如何将我的数据库调用到数据网格视图中
ps。位置在内
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;
}
}
}
IMO显示3个数据库字段并允许用户在一列中编辑这些字段是危险的建议您将它们显示为3个单独的列
也许你也可以尝试制作3个相应的属性,并通过像|
这样的分隔符将它们合并,这不会通过第四个属性出现在你的字段中。现在,当您在|
上获得相同的值拆分时,执行检查并将这些相应的值分配回3个相应的属性。(但我不建议这样做(Field1
Field2
Field3
StaffDetails
--Field1
+"|"+Field2
+"|"+Field3
然后使用e.FormattedValue.ToString((并在|
上拆分它以获得字符串[](共3个(,现在验证
此外,您还可以查看创建MaskedTextBox
列的情况,这也会有所帮助,但用户体验将是可悲的