ASP.net GridView控件(删除/更新功能)

2023-05-16

一.说明

部分代码的运用放在以往的教程中,本部分只讲解删除/更新功能

二.前端

我们在其控件上添加事件:
红色为行删除事件
绿色为行更新事件
双击后,即可在后台自动生成对应的方法体
在这里插入图片描述
其代码显示:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebGv2.aspx.cs" Inherits="WebApplication6.WebGv2" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <%--AllowPaging:True     数据进行分页
                PageSize:3           每页分'3'行
                OnPageIndexChanging: 页码改变事件

                -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
                DataKeyNames:id      主键(数据表的列名,按钮事件需要)
				OnRowCancelingEdit:	取消修改事件
				OnRowEditing:		修改事件

                -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
                本节知识点

                OnRowDeleting:      行删除事件
                OnRowUpdating:      行更新事件

                --%>
            <asp:GridView ID="GridView1" runat="server" AllowPaging="True" OnPageIndexChanging="GridView1_PageIndexChanging" PageSize="3" DataKeyNames="id" OnRowCancelingEdit="GridView1_RowCancelingEdit" OnRowEditing="GridView1_RowEditing" OnRowDeleting="GridView1_RowDeleting" OnRowUpdating="GridView1_RowUpdating">
                <Columns>
                    <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" />
                </Columns>
            </asp:GridView>
        </div>
    </form>
</body>
</html>

三.后端代码

我们填充删除与更新的方法体:

/// <summary>
/// 行删除事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e">删除事件</param>
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
    //GridView1:当前使用的控件
    //DataKeys:主键[]
    //e.RowIndex 删除行的索引
    string sql = string.Format(@"delete from student where id = '{0}'",GridView1.DataKeys[e.RowIndex].Value.ToString());

    //用行封装方法,将数据删除
    MyDBSql.excuteNonQuery(sql);

    //-1 表示编辑取消,因为我们上面将数据删除了,所以前端显示刷新后,自然显示数据已删除
    GridView1.EditIndex = -1;
    bind();
}
/// <summary>
/// 更新事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
    string sql ="update student set name='{0}',sex={1} where id='{2}'";

    //定义变量:
    //GridView1.Rows[e.RowIndex]数据表格的当前编辑行
    //Cells[2] 编辑行的第几列,因为我们的编辑/删除按钮也算一行,id也算一行,所以我们从第2行开始抓取数据
    //Controls 类似表格中的文本框

    //先定位控件的当前编辑行,然后是编辑行的第几列,然后是第几列的文本控件,然后将其转换为TextBox类型
    //然后取得TextBox 的Text ,并取消空格,转换为string类型
    string name = ((TextBox)GridView1.Rows[e.RowIndex].Cells[2].Controls[0]).Text.Trim().ToString();
    int sex = ((CheckBox)GridView1.Rows[e.RowIndex].Cells[3].Controls[0]).Checked ? 1 : 0;

	//获取id和删除获取id的方式一样
    string id = GridView1.DataKeys[e.RowIndex].Value.ToString();

    sql = string.Format(sql,name,sex,id);
    //用行封装方法,将数据修改
    MyDBSql.excuteNonQuery(sql);

    //取消编辑状态,并重新加载数据
    GridView1.EditIndex = -1;
    bind();
}

我们点击更新后,数据库便自动更新,同时页面重新加载,显示已更新的数据
在这里插入图片描述

四.数据库封装方法

这里我们调用简单的修改/删除方法:,不明白其原理的小伙伴可以翻看小白以前的笔记.ASP.net 连接Mysql,封装添加功能,原理也差不多是一样的,都是一些简单的方法,相信大家学习起来并部困难

public static int excuteNonQuery(string sql) {

   conn.Open();
   MySqlCommand cmd = conn.CreateCommand();
   cmd.CommandText = sql;

   int result=-1;
   try {
       result=cmd.ExecuteNonQuery();
   }
   finally
   {
       cmd.Dispose();
       conn.Close();

   }
   

   return result;
}

五.知识点

  • 前端asp:GridView 属性:
AllowPaging:True     数据进行分页
PageSize:3           每页分'3'行
OnPageIndexChanging: 页码改变事件

-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
DataKeyNames:id      主键(数据表的列名,按钮事件需要)
OnRowCancelingEdit:	取消修改事件
OnRowEditing:		修改事件

-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
本节知识点

OnRowDeleting:      行删除事件
OnRowUpdating:      行更新事件
  • 行删除用到的参数
//GridView1:当前使用的控件
//DataKeys:主键[]
//e.RowIndex 获取删除行的索引
//Value.ToString() 获取值,并转换为string类型
string sql = string.Format(@"delete from student where id = '{0}'",GridView1.DataKeys[e.RowIndex].Value.ToString());
  • 行删除注意事项
//在数据库删除完毕后,取消组件删除状态,并重新加载数据
GridView1.EditIndex = -1;
//此方法是自己写的方法,重新加载数据,不知道的小伙伴可以查看上节笔记的内容
bind();
  • 行修改(更新)事件参数
//定义变量:
//GridView1.Rows[e.RowIndex]数据表格的当前编辑行
//Cells[2] 编辑行的第几列,因为我们的编辑/删除按钮也算一行,id也算一行,所以我们从第2行开始抓取数据
//Controls 类似表格中的文本框

//先定位控件的当前编辑行,然后是编辑行的第几列,然后是第几列的文本控件,然后将其转换为TextBox类型
//然后取得TextBox 的Text ,并取消空格,转换为string类型
string name = ((TextBox)GridView1.Rows[e.RowIndex].Cells[2].Controls[0]).Text.Trim().ToString();

//当然我们也可以按需求,转换不同的控件,和类型
int sex = ((CheckBox)GridView1.Rows[e.RowIndex].Cells[3].Controls[0]).Checked ? 1 : 0;
  • 行更新同样需要取消编辑状态,并重新加数据
//取消编辑状态,并重新加载数据
GridView1.EditIndex = -1;
bind();

六.一些补充

<asp:GridView ID="maintainView" runat="server" AutoGenerateColumns="False" 
EnableModelValidation="True" DataKeyNames="id" OnRowCancelingEdit="GridView1_RowCancelingEdit" 
OnRowUpdating="GridView1_RowUpdating" OnRowDeleting="GridView1_RowDeleting" OnRowEditing="GridView1_RowEditing" 
>
<Columns>
    <asp:BoundField DataField="id" HeaderText="编号" />
    <asp:BoundField DataField="name" HeaderText="命名" />
    <asp:BoundField DataField="capa_group" HeaderText="Capa_Group" />
    <asp:BoundField DataField="wip1" HeaderText="wip1" />
    <asp:BoundField DataField="wip3" HeaderText="wip3" />

    <asp:BoundField DataField="out" HeaderText="out" />
    <asp:BoundField DataField="state" HeaderText="state" />
    <asp:BoundField DataField="qty" HeaderText="qty" />

	<%--将编辑设置为按钮,并且标注名称--%>
    <asp:CommandField ShowDeleteButton="True" ShowEditButton="True"
    CancelText="取消" DeleteText="删除" EditText="编辑" InsertText="插入" NewText="新建" 
    SelectText="选择" UpdateText="更新" ButtonType="Button" />
</Columns>

<HeaderStyle BackColor="Yellow" Font-Bold="true" ForeColor="BurlyWood"  />

<%--编辑行--%>
<EditRowStyle BackColor="YellowGreen" />

<%--页脚--%>
<FooterStyle BackColor="ButtonFace" Font-Bold="true" ForeColor="BurlyWood" />
</asp:GridView>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ASP.net GridView控件(删除/更新功能) 的相关文章

  • 如何在C#中获取登录SID

    如何在 C net 中检索 Windows 登录 SID 不是用户 SID 而是每个会话的唯一新 SID 恐怕您必须求助于使用 P Invoke 有一个如何做到这一点的示例pinvoke net http www pinvoke net d
  • ComponentOne 3D 曲面地图的替代方案 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我们正在为我们正在进行的一个新项目研究替代控制库 要求之一是以表面图的形式显示数据 如下面的 Comp
  • 强制加载 WPF 视觉对象的适当方法

    我一直在努力使用打印System Printing http msdn microsoft com en us library system printing aspx命名空间 我终于发现 在使用部分 API 时得到空白结果的原因是Visu
  • 僵局澄清?

    也许对 死锁 还有其他解释 但据我所知 当发生死锁时两个线程各自等待一个资源 另一个 所以两者都无法继续 但我在这里看到了几个答案 它们声称长时间的等待 不互相等待 也是一个僵局 例子 1 https stackoverflow com a
  • 前景色中的 Alpha

    我想在标签控件中创建文本的淡入淡出效果 我更改了标签前景色中的 Alpha 值 但它不受影响 我在这里看到同样的问题 http phorums com au showthread php 190812 Alpha value of the
  • 按属性值选择 XML 节点

  • RadioButton 和 DropDownList 的 MVC 服务器端验证

    使用 ASP NET Core 2 2 Razor Pages 我正在探索将单选按钮和下拉列表绑定到页面模型 很多人都在询问客户端验证以 使其正常工作 我的问题是 当我查看这段代码时 绑定引擎是否正在执行任何服务器端检查 foreach v
  • 如何使用 MsBuild v15 构建 C++ 项目?

    我在 Visual Studio 2017 中使用 NuGet 包管理器安装了以下程序集 Microsoft Build Microsoft Build Framework Microsoft Build Utilities Core 一切
  • CvMat 和 Imread 与 IpImage 和 CvLoadImage

    使用 OpenCv 2 4 我有两个选项来加载图像 1 CvMat and Imread 2 IpImage and CvLoadImage 使用哪一个更好 我尝试将两者混合并最终出现段错误 imread返回一个Mat not CvMat
  • C# 中的 DateTime.Parse 抛出异常

    我不知道为什么抛出异常 这是工作代码 DateTime Parse 1 12 2012 12 00 00 AM 这是抛出异常的一个 DateTime Parse 1 13 2012 12 00 00 AM 抛出的异常是 格式异常 包括此消息
  • .NET 查询字符串值的正则表达式

    我需要从 Url PathAndQuery 中删除任何 id SomeValue 其中 SomeValue 可以是整数或字符串 它后面可能有也可能没有另一个 符号 所以它可能是 somepage aspx cat 22 id SomeId
  • 如何修复 Delphi Prism ASP.NET 错误:“解析器错误消息:‘Oxygene’不是受支持的语言”

    我在 Delphi Prism 中编写了一个 ASP NET Web 应用程序 不是网站 在我的开发机器上一切正常 但是当我将其安装在测试服务器上时 出现以下错误 Server Error in MyApp Application Pars
  • 从原始 URL 获取重定向 URL

    我的数据库中有一个表 其中包含一些网站的 URL 我必须打开这些 URL 并验证这些页面上的一些链接 问题是某些 URL 被重定向到其他 URL 对于这样的 URL 我的逻辑是失败的 有什么方法可以传递原始 URL 字符串并获取重定向的 U
  • 如果 foreach 是一个结构数组,它会复制每个元素吗?

    我有一个结构数组 做foreach运算符在迭代数组时复制每个元素 据我所理解foreach只是底层的语法糖转换为for 所以看来答案是否定的 但我很想得到一些确认 PS 看来应该有人已经问过了 但我无法轻易找到任何东西 因此 请以提供的参考
  • 以编程方式清除 Silverlight 应用程序存储?

    我为一些客户发布了 Silverlight 应用程序 我在发布更新时遇到问题 我希望当用户最初加载网页时 如果他们的应用程序存储比上次更新网站时旧 那么this http www softcity com article internet
  • dependency walker 在正确运行的系统上给我错误

    我的系统上缺少 dll 我有以下消息 无法加载文件或程序集 mydll dll 或其依赖项之一 当然 mydll 存在于此 它很可能是它所依赖的另一个 dll 我下载了 dependency walker 来检查它可能是什么 我首先在另一个
  • .net中连续内存存储的误解?

    http msdn microsoft com en us library ms379570 v vs 80 aspx http msdn microsoft com en us library ms379570 v vs 80 aspx
  • 需要.Net 的公式解释器[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 为什么我的 .Net 对象不可序列化?

    我有一个继承自 System Data DataTable 的 MyDataTable 类 我已经在我的类中实现了 ISerialized 并且有一个 公共覆盖子 GetObjectData 但是 当我尝试序列化 MyDataTable 的
  • DISM.exe 返回代码?

    我有一个程序调用 dism exe 程序 它在后台运行一些命令 现在 我只检查返回代码 0 或其他任何内容 以显示进程失败或成功 我可以用什么来交叉检查返回代码以获得准确的返回错误 DISM 参考了哪些回报 评论中提供的链接DISMAPI

随机推荐

  • 【学习记录】Tpro遥控器_暂时取消Tpro的控制权(简易)

    文章目录 按照如下图示配置1 设置好 96 逻辑开关 96 2 选择执行该 96 逻辑开关指令 96 的 96 通道 96 3 配置成功附 xff1a 继电器与R88的接法 按照如下图示配置 1 设置好逻辑开关 2 选择执行该逻辑开关指令的
  • 【Linux】gcc编译工具,断点的设置,gdb调试

    文章目录 注意1 在gcc编译过程中一定要加入选项 96 g 96 xff1b 2 只有在代码处于 96 运行 96 中在 96 暂停 96 状态时才能查看变量值 xff1b 3 设置断点后 xff0c 程序在指定行之前停止 总结主要内容1
  • 【Linux】信号量操作函数

    文章目录 二 实验原理1 semget 函数函数作用 xff1a 参数意义 xff1a 例子 xff1a 2 semop 函数函数作用 xff1a 参数意义 xff1a struct sembuf 结构体定义如下例子 xff1a 再来个完整
  • 【Linux】# 2022 Linux 笔试主要内容 MJ_University

    2022 Linux 笔试主要内容 看前须知道 带 的都是老师复习课上提到的内容 xff0c 但不代表说一定会考哦 xff01 选择题 xff08 20分 xff09 填空题 xff08 20分 xff09 判断题 xff08 10分 xf
  • Ubuntu18.04安装AX210驱动

    Linux Support for Intel Wireless Adapters 从官网可以看到AX210支持的内核版本是5 10 43 如果要在低于5 10的内核版本上安装AX210的驱动的话 xff0c 需要安装以下方法操作 xff1
  • 【Linux】实验四 进程信号通信

    文章目录 一 实验目的二 实验内容三 实验原理1 信号3 1 1 信号的基本概念3 1 2 信号的发送 2 所涉及的系统函数调用3 2 1 fork 3 2 2 kill This is my question 3 2 3 signal 代
  • 报错.SO文件找不到

    此报错大多数可以通过设置环境变量解决 原因 xff1a 当执行函数动态链接 so时 xff0c 此文件不在缺省目录下 lib and usr lib 里 缺省 61 61 默认 解决方案 xff1a 1 find name so文件名 2
  • 头文件(.h) 和实现文件(.cpp)区别

    简单讲 xff0c 一个Package就是由同名的 h和 cpp文件组成 当然可以少其中任意一个文件 xff1a 只有 h文件的Package可以是接口或模板 template 的定义 xff1b 只有 cpp文件的Package可以是一个
  • 坚持学习100天:STL(头大的英文,一个模板库,非得写得我看不懂)

    前言 Hello 我是修齊 学习C 43 43 的第一百零一十八天 18是个美好的数字 xff0c 18岁刚刚好 xff0c 28岁也要用心学习 在这里记录一些学习的东西和学习的心情 内容主要是一些自己学习整理的小笔记 一 指针与引用 1
  • Ubuntu20.04以及ROS系统的安装(避坑指南)

    一 Ubuntu20 04的安装 暑期在我导那里确认好研究方向后 xff0c 一个人摸爬滚打走来确实走了不少弯路 xff0c 遂决定写下这篇文章来帮助有需要的朋友来避坑 本次安装是通过VMware来创建一台虚拟机进行后续操作 xff0c 之
  • Rplidar A2单线雷达实现Cartographer建图

    首先安装rplidar2 xff0c 在工作空间src目录下git clone xff0c catkin make编译后即可使用了 git clone https github com robopeak rplidar ros git 在使
  • 解决Ubuntu非root用户登录时,无法打开Firefox浏览器

    在使用Ubuntu操作系统时 xff0c 创建了一个普通用户 xff0c 登录该用户后发现无法打开Firefox浏览器 xff0c 进行如下步骤可解决问题 提示 Your Firefox profile cannot be loaded I
  • 【C语言】 链表 超详细解析

    目录 一 xff1a 静态存储和动态存储 二 xff1a 存储类别 三 xff1a malloc函数 四 xff1a free函数 五 xff1a 内存初始化函数memset 六 xff1a calloc函数 七 xff1a realloc
  • 2.stm32freeRTOS---创建一个任务

    文章目录 前言一 创建一个任务需要注意哪些 xff1f 1 任务创建函数xTaskCreate2 代码分析 二 动态 静态分配1 动态分配2 静态分配 xff1a 三 删除任务四 一个函数创建两个任务总结 前言 上一次是初步接触实时系统 x
  • 世界上最详细的Linux C udp实现文件传输

    最重要的是掌握UDP的基本概念和使用 UDP h span class token macro property span class token directive hash span span class token directive
  • LidarPointCloud保存PCD文件的方法

    在牵扯到Lidar点云数据相关的开发时 难免需要将LidarPointCloud数据转为PCD文件 来查看点云效果 本文介绍两种办法 1 写文件的方法 根据PCD文件的协议 本样例中使用的数据类型为ara lidar LidarPointC
  • SSD算法解析

    目标检测算法主要分为两类 xff1a Two stage方法 xff1a 如R CNN系列算法 xff0c 主要思路就是通过Selective Search或者CNN网络产生一系列的稀疏矩阵的候选区域 xff0c 然后对这些候选区域进行分类
  • Oracle获取日期&天数

    一 获取当年所有日期 span class token comment select from span span class token keyword select span trunc span class token punctua
  • Oracle where if

    一 where case when Oracle where不能如其他sql直接添加if逻辑 只能使用case when span class token keyword select span span class token opera
  • ASP.net GridView控件(删除/更新功能)

    一 说明 部分代码的运用放在以往的教程中 本部分只讲解删除 更新功能 二 前端 我们在其控件上添加事件 红色为行删除事件 绿色为行更新事件 双击后 即可在后台自动生成对应的方法体 其代码显示 lt 64 Page Language 61 3