当前位置: 首页 > news >正文

gridview自带编辑功能如何判断用户修改的值的合法性

在使用GridView的编辑功能更新值时,确保输入的值合法性是十分重要的。为了实现这一点,你可以在GridView的RowUpdating事件中加入代码来检查用户输入的值。如果发现输入的值不合法,你可以取消更新操作并向用户显示错误消息。下面是如何实现的步骤和示例代码


注意是RowUpdating事件不是RowUpdated事件,懂英文的应该能猜出它们的区别,这里不展开细讲

NewValues属性是一个字典集合(Dictionary),它包含了用户在 GridView 编辑模式下修改后提交的新值。这个字典的键(Key)是数据源中的字段名,值(Value)是用户输入的新数据

如果输入的值不符合预期或不合法,你可以通过设置e.Cancel = true来取消更新操作

protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) {//假设用户可能修改的字段为scoreint 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 值,或者给予某个默认值。
http://www.lryc.cn/news/375430.html

相关文章:

  • 设计模式-结构型-06-桥接模式
  • 安泰电压放大器的选型原则是什么
  • 方法分享 |公网IP怎么指定非433端口实现https访问
  • vue实现拖拽元素;vuedraggable拖拽插件
  • Javascript介绍
  • 毕业答辩PPT:如何在短时间内高效准备?
  • 树结构与算法-杨辉三角形的两种实现
  • 【机器学习】智能创意工厂:机器学习驱动的AIGC,打造未来内容新生态
  • Python - 一个恶意脚本
  • SFNC —— 采集控制(四)
  • AUTOSAR学习
  • 区区微服务,何足挂齿?
  • 数据结构 ->反转链表
  • Unity基础(一)unity的下载与安装
  • TOP10!YashanDB斩获广东省优秀信创产品与解决方案双料荣誉
  • 基于深度学习网络的USB摄像头实时视频采集与手势检测识别matlab仿真
  • 有趣且重要的JS知识合集(22)树相关的算法
  • 使用 Let’s Encrypt 生成免费 SSL 证书
  • 【电脑小白】装机从认识电脑部件开始
  • ssldump一键分析网络流量(KALI工具系列二十二)
  • 使用seq2seq架构实现英译法
  • 攻防演练“轻装上阵” | 亚信安全信舱ForCloud 打造全栈防护新策略
  • 在Android Studio中将某个文件移出Git版本管理
  • Vue46-render函数
  • @RequestParam 和 @PathVariable @Param注解的区别和作用
  • 复习一下。
  • ripro主题如何使用memcached来加速
  • 《珊瑚岛》是一款什么类型的游戏 苹果电脑如何玩到《珊瑚岛》
  • Go - 3.库源码文件
  • FPGA的基础仿真项目--七段数码管设计显示学号