【问题标题】:Validating texbox control within gridview在gridview中验证文本框控件
【发布时间】:2015-06-08 12:56:48
【问题描述】:

我正在开发一个应用程序,允许教师根据他们所教的科目为学生输入分数。现在我正在使用一个 4 列数据网格,我正在向其中填充所有学生 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 + "'");
            }
        }

谢谢。

【问题讨论】:

  • 那么这会产生任何错误/异常还是无法识别空值并继续运行?
  • 如何检查他们的.Text 属性是否为空或空字符串?
  • @Harvery :这工作正常。但我喜欢在执行插入语句之前检查所有文本框控件是否不为空。
  • @Soner :我已经完成了,您也可以在我上面发布的代码中看到它。但我需要确保在执行插入语句之前没有一个文本框是空的
  • 你有文本框还是有DataGridViewTextBoxCell

标签: c# winforms datagrid .net-4.0


【解决方案1】:

如果你拥有的是 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

【讨论】:

  • Patrick :我正在使用 DataGridViewTextBoxColumn 添加一列文本框。如果添加 DataGridViewTextBoxColumn 不是一个好主意,请建议我可以使用什么来替换 DataGridViewTextBoxColumn。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-09
  • 2021-10-11
  • 2010-12-27
  • 1970-01-01
  • 2018-03-23
  • 1970-01-01
相关资源
最近更新 更多