Heim Web-Frontend HTML-Tutorial 一个在ASP.NET中利用服务器控件GridView实现数据增删改查的例子_html/css_WEB-ITnose

一个在ASP.NET中利用服务器控件GridView实现数据增删改查的例子_html/css_WEB-ITnose

Jun 24, 2016 pm 12:33 PM

备注:这是我辅导的一个项目开发组的一个例子,用文章的方式分享出来,给更多的朋友参考。其实我们这几年的项目中,都不怎么使用服务器控件的形式了,而是更多的采用MVC这种开发模式。但是,如果项目的历史背景是用服务器控件的,也不妨继续沿用,以免变动太大,对项目的整体开发不利。

很多企业业务程序的页面,其实本质上都是对数据的操作,诸如增加、删除、修改和查询(简称:增删改查),如果有可能在一个页面中完整地实现(不需要几个页面转来转去),对于用户来说可能体验较好。

ASP.NET在2.0中开始提供多种数据控件,并且采用了模板的机制,使得我们上面的需求变得可能。今天要讲的就是号称ASP.NET中最复杂的控件:GridView的使用。它可以完整实现增删改查。

 

页面:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplicationSample.Default" %><!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head runat="server">    <title></title></head><body>    <form id="form1" runat="server">        <div>            <asp:GridView ID="gvData" runat="server" OnRowDeleting="gvData_RowDeleting" OnRowUpdating="gvData_RowUpdating" OnRowCancelingEdit="gvData_RowCancelingEdit" OnRowEditing="gvData_RowEditing" AutoGenerateColumns="true" AutoGenerateDeleteButton="true" AutoGenerateEditButton="true">               <%--<Columns>                    <asp:CommandField HeaderText="操作" UpdateText="保存" CancelText="取消" DeleteText="删除" ShowDeleteButton="true" ShowEditButton="true" EditText="编辑" />                </Columns>--%>            </asp:GridView>            <asp:Button ID="btAddNew" runat="server" Text="添加新记录" OnClick="btAddNew_Click" />        </div>    </form>        <script>        //这里为所有删除按钮都处理一个事件,请用户确认        var links = document.links;//获取所有的链接        for (var i in links) {//循环他们            var a = links[i];//取得当前这个链接            if (a.text == "Delete" || a.text=="删除") {//如果是删除按钮的话                var o = a.href;//获取这个链接的地址(默认会生成一个执行javascript的地址的)                a.href = "#";//将这个地址删除掉,就是不要让他执行默认的行为                a.addEventListener("click", function () {//添加一个新的事件注册                    var result = window.confirm("你是否真的要删除?");//向用户确认是否要删除                    if (result == true)//如果用户确定                        eval(o);//执行原先默认的那个方法(去服务器删除数据)                    return false;                });            }        }    </script></body></html>
Nach dem Login kopieren

代码:

using System;using System.Collections.Generic;using System.Web.UI.WebControls;namespace WebApplicationSample{    /// <summary>    /// 这个实例主要演示了如何使用GridView进行数据的增、删、改、查。    /// 更多有关于该控件的知识,可以参考 http://msdn.microsoft.com/zh-cn/library/vstudio/system.web.ui.webcontrols.gridview.aspx (请仔细阅读)    /// </summary>    public partial class Default : System.Web.UI.Page    {        /// <summary>        /// 这是我们定义的一个业务实体类,用来保存界面上的列表数据,为了保存,必须支持序列化        /// </summary>        [Serializable]        public class Employee        {            public string FirstName { get; set; }            public string LastName { get; set; }        }        private List<Employee> data = new List<Employee>();//这是用来保存那个列表数据的字段        /// <summary>        /// 重写这个方法来保存视图状态。因为每次页面刷新的时候,默认情况下,data都会被清空,如果希望在多次回发的过程中保存数据,则重写该方法        /// </summary>        /// <returns></returns>        protected override object SaveViewState()        {            var obj = new object[] { base.SaveViewState(), data };            return obj;        }        /// <summary>        /// 重写该方法,是与上面这个方法配套,在回发回来之后加载并还原        /// </summary>        /// <param name="savedState"></param>        protected override void LoadViewState(object savedState)        {            var obj = savedState as object[];            base.LoadViewState(obj[0]);            data = obj[1] as List<Employee>;        }        /// <summary>        /// 页面初始化的时候执行该代码        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        protected void Page_Load(object sender, EventArgs e)        {            if (!IsPostBack)            {//这里只是一个示例,默认给页面添加一个初始的员工,实际在做的时候,可以不加                data = new List<Employee>(){                    new Employee(){FirstName ="ares",LastName ="chen"}                };                gvData.DataSource = data;                gvData.DataBind();            }        }        /// <summary>        /// 添加新的员工时执行该代码        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        protected void btAddNew_Click(object sender, EventArgs e)        {            data.Add(new Employee());//创建一个空的对象            gvData.DataSource = data;//设置数据源            gvData.EditIndex = data.Count - 1;//设置当前这个对象为编辑状态            gvData.DataBind();//绑定数据        }        /// <summary>        /// 当用户决定要删除某一行数据时执行该代码        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        protected void gvData_RowDeleting(object sender, GridViewDeleteEventArgs e)        {            //删除某一行            data.RemoveAt(e.RowIndex);            gvData.DataSource = data;            gvData.EditIndex = -1;            gvData.DataBind();        }        /// <summary>        /// 当用户要保存修改时执行该代码        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        protected void gvData_RowUpdating(object sender, GridViewUpdateEventArgs e)        {            var index = e.RowIndex;//获取当前编辑行当索引号            var row = gvData.Rows[index];//获取当前用户编辑的这一行            var firstName = (row.Cells[1].Controls[0] as TextBox).Text;//获取用户输入的数据            var lastName = (row.Cells[2].Controls[0] as TextBox).Text;//获取用户输入的数据            var emp = data[index];//找到这个对象            emp.FirstName = firstName;            emp.LastName = lastName;            gvData.DataSource = data;            gvData.EditIndex = -1;//退出编辑状态            gvData.DataBind();        }        /// <summary>        /// 当用户要取消编辑的时候        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        protected void gvData_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)        {            gvData.DataSource = data;            gvData.EditIndex = -1;            gvData.DataBind();        }        /// <summary>        /// 当用户要进行编辑的时候        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        protected void gvData_RowEditing(object sender, GridViewEditEventArgs e)        {            gvData.DataSource = data;            gvData.EditIndex = e.NewEditIndex;            gvData.DataBind();        }    }}
Nach dem Login kopieren
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Schwierigkeiten bei der Aktualisierung der Zwischenspeicherung offizieller Konto -Webseiten: Wie vermeiden Sie den alten Cache, der sich auf die Benutzererfahrung nach der Versionsaktualisierung auswirkt? Schwierigkeiten bei der Aktualisierung der Zwischenspeicherung offizieller Konto -Webseiten: Wie vermeiden Sie den alten Cache, der sich auf die Benutzererfahrung nach der Versionsaktualisierung auswirkt? Mar 04, 2025 pm 12:32 PM

Das offizielle Konto -Webseite aktualisiert Cache, dieses Ding ist einfach und einfach und es ist kompliziert genug, um einen Topf davon zu trinken. Sie haben hart gearbeitet, um den offiziellen Account -Artikel zu aktualisieren, aber der Benutzer hat die alte Version immer noch geöffnet. Schauen wir uns in diesem Artikel die Wendungen und Wendungen und wie man dieses Problem anmutig ansehen. Nach dem Lesen können Sie sich leicht mit verschiedenen Caching -Problemen befassen, sodass Ihre Benutzer immer den frischesten Inhalt erleben können. Sprechen wir zuerst über die Grundlagen. Um es unverblümt auszudrücken, speichert der Browser oder Server einige statische Ressourcen (wie Bilder, CSS, JS) oder Seiteninhalte, um die Zugriffsgeschwindigkeit zu verbessern. Wenn Sie das nächste Mal darauf zugreifen, können Sie ihn direkt aus dem Cache abrufen, ohne ihn erneut herunterzuladen, und es ist natürlich schnell. Aber dieses Ding ist auch ein zweischneidiges Schwert. Die neue Version ist online,

Wie verwende ich HTML5 -Formularvalidierungsattribute, um die Benutzereingabe zu validieren? Wie verwende ich HTML5 -Formularvalidierungsattribute, um die Benutzereingabe zu validieren? Mar 17, 2025 pm 12:27 PM

In dem Artikel werden unter Verwendung von HTML5 -Formularvalidierungsattributen wie Erforderlich, Muster, Min, MAX und Längengrenzen erörtert, um die Benutzereingabe direkt im Browser zu validieren.

Wie füge ich PNG -Bildern auf Webseiten effizient Schlaganfalleffekte hinzu? Wie füge ich PNG -Bildern auf Webseiten effizient Schlaganfalleffekte hinzu? Mar 04, 2025 pm 02:39 PM

Dieser Artikel zeigt einen effizienten PNG -Grenzzusatz zu Webseiten mithilfe von CSS. Es wird argumentiert, dass CSS im Vergleich zu JavaScript oder Bibliotheken eine überlegene Leistung bietet, um zu beschreiben, wie die Randbreite, Stil und Farbe für subtile oder herausragende Effekte angepasst werden können

Was sind die besten Praktiken für die Kompatibilität des Cross-Browsers in HTML5? Was sind die besten Praktiken für die Kompatibilität des Cross-Browsers in HTML5? Mar 17, 2025 pm 12:20 PM

In Artikel werden Best Practices zur Gewährleistung der HTML5-Cross-Browser-Kompatibilität erörtert und sich auf die Erkennung von Merkmalen, die progressive Verbesserung und die Testmethoden konzentriert.

Was ist der Zweck des & lt; datalist & gt; Element? Was ist der Zweck des & lt; datalist & gt; Element? Mar 21, 2025 pm 12:33 PM

Der Artikel erörtert den HTML & lt; Datalist & gt; Element, das die Formulare verbessert, indem automatische Vorschläge bereitgestellt, die Benutzererfahrung verbessert und Fehler reduziert werden.Character Count: 159

Was ist der Zweck des & lt; Fortschritts & gt; Element? Was ist der Zweck des & lt; Fortschritts & gt; Element? Mar 21, 2025 pm 12:34 PM

Der Artikel erörtert den HTML & lt; Progress & gt; Element, Absicht, Styling und Unterschiede vom & lt; Meter & gt; Element. Das Hauptaugenmerk liegt auf der Verwendung & lt; Fortschritt & gt; Für Aufgabenabschluss und & lt; Meter & gt; für stati

Wie benutze ich die HTML5 & lt; Zeit & gt; Element, um Daten und Zeiten semantisch darzustellen? Wie benutze ich die HTML5 & lt; Zeit & gt; Element, um Daten und Zeiten semantisch darzustellen? Mar 12, 2025 pm 04:05 PM

Dieser Artikel erklärt den HTML5 & lt; Time & gt; Element für semantische Datum/Uhrzeit. Es betont die Wichtigkeit des DateTime-Attributs für die Maschinenlesbarkeit (ISO 8601-Format) neben menschenlesbarem Text, das Zubehör steigert

Was ist der Zweck des & lt; Meter & gt; Element? Was ist der Zweck des & lt; Meter & gt; Element? Mar 21, 2025 pm 12:35 PM

Der Artikel erörtert das HTML & lt; Meter & gt; Element, verwendet zur Anzeige von Skalar- oder Bruchwerten innerhalb eines Bereichs und seine gemeinsamen Anwendungen in der Webentwicklung. Es differenziert & lt; Meter & gt; von & lt; Fortschritt & gt; und Ex

See all articles