在 gridview 中验证文本框控件
Validating texbox control within gridview
我正在开发一个应用程序,允许教师根据选择他们教授的科目为学生输入分数。现在我正在使用一个 4 columed 数据网格,我正在填充所有学生 rollnum(第 1 列)和名称(第 2 列)和文本框控件以输入测试标记(第 3 列)和文本框控件以输入测验标记(第 4 列)。我已经成功地通过数据表将数据填充到数据网格。现在我的问题是,当老师输入所有标记并单击提交按钮时,我希望我的应用程序检查是否有任何文本框留空。除非所有文本框都已填满,否则我的 INSERT 查询(向数据库查询添加标记)不应执行。这是我到目前为止尝试过的
int rowcount = DTUSNName.Rows.Count;//rows count of datatable
for (int i = 0; i < rowcount; i++)
{
if (dataGridView1.Rows[i].Cells[0].Value != null)
{
if (dataGridView1.Rows[i].Cells[1].Value != null)
{
var confirmResult = MessageBox.Show("Once the marks are added you wont be allowed to make changes. Do you want to proceed?","Confirm!!",MessageBoxButtons.YesNo);
if (confirmResult == DialogResult.Yes)
{
SqlCommand Test1query = new SqlCommand("INSERT INTO TblStudentReg (Test1, Quiz1) VALUES (@fld1,@fld2) WHERE Code=@code AND Sem = @sem AND CC=@cc AND AcademicYr = @aca", con);
Test1query.Parameters.Add(new SqlParameter("@fld1", dataGridView1.Rows[i].Cells[0].Value.ToString()));
Test1query.Parameters.Add(new SqlParameter("@fld2", dataGridView1.Rows[i].Cells[1].Value.ToString()));
Test1query.Parameters.Add(new SqlParameter("@code", temp));//rollnum
Test1query.Parameters.Add(new SqlParameter("@sem", StaffMEDrp1.SelectedItem));subject code
Test1query.Parameters.Add(new SqlParameter("@cc", label3.Text));//subject code
Test1query.Parameters.Add(new SqlParameter("@aca", StaffMETxt1.Text));//academic yr
con.Open();
Test1query.ExecuteNonQuery();
con.Close();
}
else
{
}
}
else
{
MessageBox.Show("You have not set Quiz 1 Marks for USN : '" + usn + "'");
}
}
else
{
MessageBox.Show("You have not set Test 1 Marks for USN : '" + usn + "'");
}
}
谢谢。
如果您拥有的是 DataGridViewTextBoxCells 而不是 TextBoxes,则可以使用此方法
static bool IsAnyCellEmpty(DataGridView gridView, params int[] columnIndexes)
{
bool result = false;
foreach (DataGridViewRow row in gridView.Rows)
{
foreach (var index in columnIndexes)
{
if (row.Cells[index].Value.ToString().Trim().Length == 0)
{
result = true;
break;
}
}
}
return result;
}
您应该在第二个参数中传递验证列的列索引
如果其中任何一个为空,则结果为 true
PS:如果你想让它计算有多少未设置的值,你可以将结果变量更改为 int
并执行 result++
而不是 result = true
我正在开发一个应用程序,允许教师根据选择他们教授的科目为学生输入分数。现在我正在使用一个 4 columed 数据网格,我正在填充所有学生 rollnum(第 1 列)和名称(第 2 列)和文本框控件以输入测试标记(第 3 列)和文本框控件以输入测验标记(第 4 列)。我已经成功地通过数据表将数据填充到数据网格。现在我的问题是,当老师输入所有标记并单击提交按钮时,我希望我的应用程序检查是否有任何文本框留空。除非所有文本框都已填满,否则我的 INSERT 查询(向数据库查询添加标记)不应执行。这是我到目前为止尝试过的
int rowcount = DTUSNName.Rows.Count;//rows count of datatable
for (int i = 0; i < rowcount; i++)
{
if (dataGridView1.Rows[i].Cells[0].Value != null)
{
if (dataGridView1.Rows[i].Cells[1].Value != null)
{
var confirmResult = MessageBox.Show("Once the marks are added you wont be allowed to make changes. Do you want to proceed?","Confirm!!",MessageBoxButtons.YesNo);
if (confirmResult == DialogResult.Yes)
{
SqlCommand Test1query = new SqlCommand("INSERT INTO TblStudentReg (Test1, Quiz1) VALUES (@fld1,@fld2) WHERE Code=@code AND Sem = @sem AND CC=@cc AND AcademicYr = @aca", con);
Test1query.Parameters.Add(new SqlParameter("@fld1", dataGridView1.Rows[i].Cells[0].Value.ToString()));
Test1query.Parameters.Add(new SqlParameter("@fld2", dataGridView1.Rows[i].Cells[1].Value.ToString()));
Test1query.Parameters.Add(new SqlParameter("@code", temp));//rollnum
Test1query.Parameters.Add(new SqlParameter("@sem", StaffMEDrp1.SelectedItem));subject code
Test1query.Parameters.Add(new SqlParameter("@cc", label3.Text));//subject code
Test1query.Parameters.Add(new SqlParameter("@aca", StaffMETxt1.Text));//academic yr
con.Open();
Test1query.ExecuteNonQuery();
con.Close();
}
else
{
}
}
else
{
MessageBox.Show("You have not set Quiz 1 Marks for USN : '" + usn + "'");
}
}
else
{
MessageBox.Show("You have not set Test 1 Marks for USN : '" + usn + "'");
}
}
谢谢。
如果您拥有的是 DataGridViewTextBoxCells 而不是 TextBoxes,则可以使用此方法
static bool IsAnyCellEmpty(DataGridView gridView, params int[] columnIndexes)
{
bool result = false;
foreach (DataGridViewRow row in gridView.Rows)
{
foreach (var index in columnIndexes)
{
if (row.Cells[index].Value.ToString().Trim().Length == 0)
{
result = true;
break;
}
}
}
return result;
}
您应该在第二个参数中传递验证列的列索引 如果其中任何一个为空,则结果为 true
PS:如果你想让它计算有多少未设置的值,你可以将结果变量更改为 int
并执行 result++
而不是 result = true