使用C#ASP.NET Web表单。我试图在GridVew的页脚行中的文本框中测试空值,以避免在调用Insert()时出现SQL异常。
代码隐藏
protected void gvTask_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "FooterInsert" && Page.IsValid)
{
GridViewRow gvr = gvTaskDashboard.FooterRow as GridViewRow;
if (gvr == null) { return; }
// Get Controls
DropDownList ddlEmployee = gvTaskDashboard.Parent.FindControl("ddlEmployee") as DropDownList;
TextBox txtProjectID = gvr.FindControl("txtNewProjectID") as TextBox;
TextBox txtReleaseID = gvr.FindControl("txtNewReleaseID") as TextBox;
DropDownList ddlTaskCode = gvr.FindControl("ddlNewTaskCode") as DropDownList;
DropDownList ddlstatus = gvr.FindControl("ddlNewStatus") as DropDownList;
DropDownList ddlPriority = gvr.FindControl("ddlNewPriority") as DropDownList;
TextBox txtDueDate = gvr.FindControl("txtNewDueDate") as TextBox;
TextBox txtNotes = gvr.FindControl("txtNewNotes") as TextBox;
TextBox txtCompDate = gvr.FindControl("txtNewCompDate") as TextBox;
// Test for nulls
if (txtProjectID == null || txtReleaseID == null || txtDueDate == null)
{
// Throw error message
ClientScript.RegisterStartupScript(this.GetType(), "error", "alert('Enter Project ID, Release ID, and Due Date.');", true);
}
else
{
// Initialize Insert Parameters
TaskDashboardSQL.InsertParameters.Clear();
TaskDashboardSQL.InsertParameters.Add("EmployeeID", ddlEmployee.SelectedValue);
TaskDashboardSQL.InsertParameters.Add("ProjectID", txtProjectID.Text);
TaskDashboardSQL.InsertParameters.Add("ReleaseID", txtReleaseID.Text);
TaskDashboardSQL.InsertParameters.Add("TaskCodeID", ddlTaskCode.SelectedValue);
TaskDashboardSQL.InsertParameters.Add("TaskStatusID", ddlstatus.SelectedValue);
TaskDashboardSQL.InsertParameters.Add("TaskPriorityID", ddlPriority.SelectedValue);
TaskDashboardSQL.InsertParameters.Add("DueDate", txtDueDate.Text);
TaskDashboardSQL.InsertParameters.Add("Notes", txtNotes.Text);
TaskDashboardSQL.InsertParameters.Add("CompDate", txtCompDate.Text);
TaskDashboardSQL.Insert();
}
} // end FooterInsert
} // end gvTask_RowCommand
加载页面后,GridView将按预期显示。在页脚行中,我有ProjectID,ReleaseID,DueDate,Notes和CompDate的空文本框。其他字段的下拉列表。 Employee ID下拉列表在GridView外部的页面上进一步引用。
如果我填写项目ID,版本ID和截止日期,那么插入SQL就可以了。但是由于SQL表是使用NOT NULL构建的,如果它们保留为空,我会得到预期的SqlException,试图将NULL值插入到不允许空值的列中。
我尝试使用if (txtProjectID == null || txtReleaseID == null || txtDueDate == null)
块捕获空值测试,但我仍然在TaskDashboardSQL.Insert()上捕获异常;在我的其他街区。
没有正确捕获空值的if()语句是否有问题?
编辑:我尝试使用if (txtProjectID.Text == null || txtReleaseID.Text == null || txtDueDate.Text == null)
并在else子句中获得相同的SQLException。
答案 0 :(得分:2)
您正在检查TextBox
是否为null
,这与检查其中Text
是否有值有所不同。无论是否有人输入了任何内容,文本框都会显示出来。
请考虑评估txtProjectID.Text
。此外,您可以使用string.IsNullOrWhitespace
检查是否有人在其中放入一个空格或将其留空。