asp.net中使用DatagridView的增删改方法具体实现

当我们在ASP.NET应用程序中使用DataGridView控件时,我们通常需要实现增、删、改等数据交互操作功能。下面介绍具体实现方法:

一、创建数据库

选择合适的数据库系统,在其中创建一个表格,用于我们的演示。表格的结构如下:

CREATE TABLE [dbo].[Users](
    [UserID] [int] IDENTITY(1,1) NOT NULL,
    [Username] [nvarchar](50) NOT NULL,
    [Password] [nvarchar](50) NOT NULL,
    [Email] [nvarchar](50) NOT NULL,
    CONSTRAINT [PK_Users] PRIMARY KEY CLUSTERED([UserID] ASC)
    )

二、绑定DataGridView控件

在前端ASPX页面上添加一个DataGridView控件,并在后台代码中绑定数据源:

<asp:DataGridView ID="GridView1" runat="server"></asp:DataGridView>
protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        BindGridview();
    }
}

private void BindGridview()
{
    string connString = ConfigurationManager.ConnectionStrings["conn"].ToString();
    SqlConnection conn = new SqlConnection(connString);
    SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM Users", conn);
    DataTable dt = new DataTable();
    da.Fill(dt);
    GridView1.DataSource = dt;
    GridView1.DataBind();
}

三、实现添加新记录

在ASP.NET中,我们使用SqlCommand类执行SQL命令。下面是添加新记录的实现代码:

protected void btnSave_Click(object sender, EventArgs e)
{
    string connString = ConfigurationManager.ConnectionStrings["conn"].ToString();
    SqlConnection conn = new SqlConnection(connString);
    string cmdText = "INSERT INTO Users (Username, Password, Email) VALUES (@UserName, @Password, @Email)";
    SqlCommand cmd = new SqlCommand(cmdText, conn);
    cmd.Parameters.AddWithValue("@UserName", txtUserName.Text);
    cmd.Parameters.AddWithValue("@Password", txtPassword.Text);
    cmd.Parameters.AddWithValue("@Email", txtEmail.Text);
    conn.Open();
    cmd.ExecuteNonQuery();
    conn.Close();

    BindGridview();
}

四、实现修改记录

DataGridView控件的默认编辑模式为“单元格”模式,而我们需要的是“行”模式。因此,我们需要在DataGridView的属性窗口中将EditMode属性设置为“EditOnKeystrokeOrF2”,可以在选中整行的情况下进行编辑。

当修改记录时,我们需要获取当前行的唯一标识 - UserID,以便于根据该标识修改数据库中的记录。下面是修改记录的实现代码:

protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
    string userID = GridView1.Rows[e.RowIndex].Cells[0].Text;
    string userName = ((TextBox)GridView1.Rows[e.RowIndex].Cells[1].Controls[0]).Text;
    string password = ((TextBox)GridView1.Rows[e.RowIndex].Cells[2].Controls[0]).Text;
    string email = ((TextBox)GridView1.Rows[e.RowIndex].Cells[3].Controls[0]).Text;

    string connString = ConfigurationManager.ConnectionStrings["conn"].ToString();
    SqlConnection conn = new SqlConnection(connString);
    string cmdText = "UPDATE Users SET Username=@UserName, Password=@Password, Email=@Email WHERE UserID=@UserID";
    SqlCommand cmd = new SqlCommand(cmdText, conn);
    cmd.Parameters.AddWithValue("@UserName", userName);
    cmd.Parameters.AddWithValue("@Password", password);
    cmd.Parameters.AddWithValue("@Email", email);
    cmd.Parameters.AddWithValue("@UserID", userID);
    conn.Open();
    cmd.ExecuteNonQuery();
    conn.Close();

    GridView1.EditIndex = -1;
    BindGridview();
}

五、实现删除记录

在删除记录时,我们需要获取当前行的唯一标识 - UserID,以便于根据该标识从数据库中删除记录。下面是删除记录的实现代码:

protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
    string userID = GridView1.Rows[e.RowIndex].Cells[0].Text;

    string connString = ConfigurationManager.ConnectionStrings["conn"].ToString();
    SqlConnection conn = new SqlConnection(connString);
    string cmdText = "DELETE FROM Users WHERE UserID=@UserID";
    SqlCommand cmd = new SqlCommand(cmdText, conn);
    cmd.Parameters.AddWithValue("@UserID", userID);
    conn.Open();
    cmd.ExecuteNonQuery();
    conn.Close();

    BindGridview();
}

以上就是ASP.NET中使用DataGridView控件的增删改方法的具体实现,可以用于自己的项目中实现相应的功能。

下面是具体的代码示例:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="DataGridView.aspx.cs" Inherits="DataGridView" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <meta charset="utf-8" />
    <title>DataGridView Example</title>
    <style type="text/css">
        table {
            border-collapse: collapse;
            margin: 10px 0;
            width: 100%;
        }

        table td, table th {
            border: 1px solid #bbb;
            padding: 4px;
            text-align: center;
        }

        h2 {
            margin: 30px 0 10px 0;
        }

        .add-new {
            margin-bottom: 10px;
        }

        .edit-controls {
            display: inline-block;
            width: 100%;
        }

        .edit-controls input[type="text"] {
            width: 100%;
            margin-bottom: 5px;
        }

        .edit-controls input[type="button"] {
            margin-top: 5px;
        }
    </style>
</head>
<body>
    <form id="form1" runat="server">
        <h2>DataGridView Example</h2>
        <div class="add-new">
            <input type="text" id="txtUserName" placeholder="Username" required />
            <input type="text" id="txtPassword" placeholder="Password" required />
            <input type="text" id="txtEmail" placeholder="Email" required />
            <input type="button" id="btnSave" value="Save" onclick="btnSave_Click()" />
        </div>
        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" OnRowDeleting="GridView1_RowDeleting" OnRowEditing="GridView1_RowEditing" OnRowUpdating="GridView1_RowUpdating">
            <Columns>
                <asp:BoundField DataField="UserID" HeaderText="UserID" ReadOnly="True" />
                <asp:TemplateField HeaderText="Username" ItemStyle-Width="200px">
                    <ItemTemplate>
                        <asp:Label ID="lblUserName" runat="server" Text='<%#Eval("Username")%>'></asp:Label>
                    </ItemTemplate>
                    <EditItemTemplate>
                        <div class="edit-controls"><input type="text" ID="txtUserName" runat="server" value='<%#Eval("Username")%>' /></div>
                    </EditItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Password" ItemStyle-Width="200px">
                    <ItemTemplate>
                        <asp:Label ID="lblPassword" runat="server" Text='<%#Eval("Password")%>'></asp:Label>
                    </ItemTemplate>
                    <EditItemTemplate>
                        <div class="edit-controls"><input type="text" ID="txtPassword" runat="server" value='<%#Eval("Password")%>' /></div>
                    </EditItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Email" ItemStyle-Width="200px">
                    <ItemTemplate>
                        <asp:Label ID="lblEmail" runat="server" Text='<%#Eval("Email")%>'></asp:Label>
                    </ItemTemplate>
                    <EditItemTemplate>
                        <div class="edit-controls"><input type="text" ID="txtEmail" runat="server" value='<%#Eval("Email")%>' /></div>
                    </EditItemTemplate>
                </asp:TemplateField>
                <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" />
            </Columns>
        </asp:GridView>
    </form>
    <script type="text/javascript">
        function btnSave_Click() {
            var userName = document.getElementById("txtUserName").value;
            var password = document.getElementById("txtPassword").value;
            var email = document.getElementById("txtEmail").value;

            if (userName == "" || password == "" || email == "") {
                alert("Please enter all fields.");
                return;
            }

            __doPostBack('<%=btnSave.ClientID %>', '');
        }
    </script>
</body>
</html>

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:asp.net中使用DatagridView的增删改方法具体实现 - Python技术站

(0)
上一篇 2023年5月31日
下一篇 2023年5月31日

相关文章

  • .NET Core利用BsonDocumentProjectionDefinition和Lookup进行 join 关联查询(推荐)

    以下是关于在.NET Core中使用BsonDocumentProjectionDefinition和Lookup进行join关联查询的详细攻略: 1. 什么是BsonDocumentProjectionDefinition和Lookup 在MongoDB中,我们可以使用lookup操作符来实现join关联查询。在.NET Core中,我们可以使用BsonP…

    C# 2023年5月12日
    00
  • BootStrap实现带有增删改查功能的表格(DEMO详解)

    BootStrap实现带有增删改查功能的表格(DEMO详解) 在Web开发中,表格是一个非常常见的组件。为了提高表格的交互性和用户体验,我们通常会在表格中添加增删改查等功能。本文将介绍如何使用BootStrap实现带有增删改查功能的表格。 环境准备 在使用BootStrap实现带有增删改查功能的表格前,需要先了解以下知识: BootStrap:一个流行的前端…

    C# 2023年5月15日
    00
  • c#中oracle的to_date函数使用方法

    讲解C#中Oracle的to_date函数使用方法需要以下过程: 第一步:了解to_date函数 在Oracle中,to_date函数是用来将字符串转化为日期类型的函数。它的常用语法如下: to_date(‘日期字符串’, ‘日期格式化字符串’) 其中,日期字符串是要转化的字符串,日期格式化字符串则表示日期字符串的表现形式,例如’yyyy-mm-dd’。 在…

    C# 2023年6月1日
    00
  • C# 使用Log4net添加日志记录的方法

    下面我来详细讲解一下: C#使用Log4net添加日志记录的方法 1. 什么是Log4net Log4net 是一个开源的、线程安全的、基于组件的日志工具,主要用于记录和管理应用程序的日志信息。它可以将日志信息输出到控制台、文件、数据库等多个目标位置,方便管理和排查问题。 2. 安装Log4net 安装 Log4net 非常简单,只需要在 Visual St…

    C# 2023年6月6日
    00
  • C#判断本地文件是否处于打开状态的方法

    首先,我们需要明确一下什么是“本地文件处于打开状态”。通常情况下,当一个程序打开一个文件时,该文件就会被锁定,此时其他程序无法访问该文件。因此,我们在判断一个本地文件是否处于打开状态时,实际上就是判断该文件是否被其他程序锁定了。 以下是两种判断本地文件是否处于打开状态的方法: 方法一:使用try-catch语句 我们可以使用try-catch语句来判断一个本…

    C# 2023年6月1日
    00
  • C# File.ReadAllText()方法: 读取指定文件的所有文本

    C#中的File.ReadAllText()函数 在C#语言中,File类中提供了一个ReadAllText()函数,用于读取指定文件的所有内容。 函数语法 File.ReadAllText(string path); path : 要读取的文件路径。 函数作用 File.ReadAllText()函数将读取指定路径的文件的所有内容,并将其作为字符串返回。 …

    C# 2023年4月19日
    00
  • Sitecore10 Demo演示环境Azure一键部署(Step By Step Guide to installing Sitecore10 in Azure Paas)

    本文演示Sitecore XP Single(XP0)在Azure上的一键部署,即“30分钟生成Sitecore演示环境”的一环。 关于XP(即Sitecore Experience Platform) roles的相关介绍移步 XP Single配置主要用来开发和测试: Four Sitecore roles: Content Delivery, Cont…

    C# 2023年4月28日
    00
  • c#求范围内素数的示例分享(c#求素数)

    C#求范围内素数的完整攻略 1. 实现思路 定义一个方法bool IsPrime(int n)用于判断是否为素数 遍历2到n-1,如果能整除n则不是素数,否则是素数 定义一个方法List<int> GetPrimes(int start, int end)用于获取指定范围内的素数列表 遍历start到end,如果该数是素数则添加到列表中 注意:如…

    C# 2023年6月7日
    00
合作推广
合作推广
分享本页
返回顶部