在使用GridView的编辑功能更新值时,确保输入的值合法性是十分重要的。为了实现这一点,你可以在GridView的
RowUpdating
事件中加入代码来检查用户输入的值。如果发现输入的值不合法,你可以取消更新操作并向用户显示错误消息。下面是如何实现的步骤和示例代码
注意是RowUpdating事件不是RowUpdated事件,懂英文的应该能猜出它们的区别,这里不展开细讲
NewValues属性是一个字典集合(Dictionary),它包含了用户在 GridView 编辑模式下修改后提交的新值。这个字典的键(Key)是数据源中的字段名,值(Value)是用户输入的新数据
如果输入的值不符合预期或不合法,你可以通过设置
e.Cancel = true
来取消更新操作
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) {
//假设用户可能修改的字段为score
int score = int.Parse(e.NewValues["score"].ToString());//NewValues中包含所有用户修改后的新值,通过中括号访问到具体字段的值
if(score < 0 || score > 100) {//然后就能进行合法判断
e.Cancel = true;//Cancle属性的真值决定了本次编辑事件是否取消
Response.Write("<script language=javascript> alert('该分数不合理,请重新评分!');</script>");//给出相应的提示
}
}
在处理 GridViewUpdateEventArgs
的 NewValues
集合时,你可能需要判断用户修改的值是否为空或为空字符串,特别是在处理表单输入和更新数据库记录时。这里的“空”可能包括 null
、空字符串(""
)或仅包含空白字符(如空格)的字符串。下面是如何进行这种判断的示例代码:
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) {
object newScoreObj = e.NewValues["score"];
if(newScoreObj == null || string.IsNullOrWhiteSpace(newScoreObj.ToString())) {// 使用系统方法进行判空操作
e.Cancel = true;
Response.Write("<script language=javascript> alert('请给出分数!');</script>");//给出相应的提示
}
else {
string sco_text = e.NewValues["score"].ToString();
int score = int.Parse(sco_text);//NewValues中包含所有用户修改后的新值,通过中括号访问到具体字段的值
if (score < 0 || score > 100) {//然后就能进行合法判断
e.Cancel = true;//Cancle属性的真值决定了本次编辑事件是否取消
Response.Write("<script language=javascript> alert('该分数不合理,请重新评分!');</script>");//给出相应的提示
}
}
}
注意事项:
- 在这个示例中,使用了
string.IsNullOrWhiteSpace
方法来检查用户提交的值是否为null
、空字符串或仅包含空白字符的字符串。这是一个比较全面的空值检查方法。- 通过
e.NewValues["Name"]
获取的对象类型是object
,所以在传递给string.IsNullOrWhiteSpace
方法之前,需要调用ToString()
方法进行转换。同时,为了避免当e.NewValues["Name"]
为null
时直接调用ToString()
抛出异常,代码中首先进行了null
检查。(短路或操作)- 设置
e.Cancel = true;
可以取消更新操作。如果检测到用户输入了不符合要求的值(例如此处的空值),并且你不希望继续执行更新操作,这是一个非常有用的方法。取消操作后,你可以添加自己的逻辑来向用户显示警告或错误信息,指导用户进行正确操作。- 在实际应用中,根据你的业务需求,对于空值的处理逻辑可能不同。例如,某些情况下你可能允许空值,并将其转换为数据库中的
NULL
值,或者给予某个默认值。