asp.net中gridview的查询、分页、编辑更新、删除的实例代码_实用技巧

1.A,运行效果图

1.B,源代码
/App_Data/sql-basic.sql

复制代码 代码如下:

use master
go
if exists(select * from sysdatabases where name='db1')
begin
    drop database db1
end
go
create database db1
go
use db1
go
-- ================================
-- ylb:1,类别表
-- ================================
create table category
(
    categoryid int identity(1,1) primary key,    --编号【PK】
    categoryname varchar(20) not null            --名称
)

 

insert into category(categoryname) values('饮料')
insert into category(categoryname) values('主食')
insert into category(categoryname) values('副食')
insert into category(categoryname) values('蔬菜')

-- ================================
-- ylb:2,产品表
-- ================================
create table product
(
    productid int identity(1001,1) primary key,    --编号【PK】
    productname varchar(20),        --名称
    unitprice numeric(7,2),            --单价
    special varchar(10) check(special in('特价','非特价')),    --是否特价【C】
    categoryid int foreign key references category(categoryid)    --类别编号【FK】
)

insert into product(productname,unitprice,special,categoryid) values('可乐1',12.6,'特价',1)
insert into product(productname,unitprice,special,categoryid) values('可乐2',12.6,'非特价',1)
insert into product(productname,unitprice,special,categoryid) values('可乐3',12.6,'非特价',1)
insert into product(productname,unitprice,special,categoryid) values('可乐4',12.6,'非特价',1)
insert into product(productname,unitprice,special,categoryid) values('可乐5',12.6,'特价',1)
insert into product(productname,unitprice,special,categoryid) values('可乐6',12.6,'特价',1)
insert into product(productname,unitprice,special,categoryid) values('可乐7',12.6,'特价',1)
insert into product(productname,unitprice,special,categoryid) values('可乐8',12.6,'特价',1)
insert into product(productname,unitprice,special,categoryid) values('馒头1',12.6,'特价',2)
insert into product(productname,unitprice,special,categoryid) values('豆腐1',12.6,'特价',3)
insert into product(productname,unitprice,special,categoryid) values('冬瓜1',12.6,'特价',4)

select * from category
select productid,productname,unitprice,special,categoryid from product

,2
/App_Code/
/App_Code/DBConnection.cs

复制代码 代码如下:

using System.Data.SqlClient;
/// <summary>
///DBConnection 的摘要说明
///数据连接类
/// </summary>
public class DBConnection
{
    SqlConnection con = null;

    public DBConnection()
    {
        //创建连接对象
        con = new SqlConnection("Server=.;Database=db1;Uid=sa;pwd=sa");
    }

    /// <summary>
    /// 数据连接对象
    /// </summary>
    public SqlConnection Con
    {
        get { return con; }
        set { con = value; }
    }
}

/App_Code/CategoryInfo.cs
/App_Code/CategoryOper.cs
/App_Code/ProductInfo.cs

复制代码 代码如下:

using System;

/// <summary>
///ProductInfo 的摘要说明
///产品实体类
/// </summary>
public class ProductInfo
{
    //1,Attributes
    int productId;
    string productName;
    decimal unitprice;
    string special;
    int categoryId;

    public ProductInfo()
    {
        //
        //TODO: 在此处添加构造函数逻辑
        //
    }
    //3,

    /// <summary>
    /// 产品编号【PK】
    /// </summary>
    public int ProductId
    {
        get { return productId; }
        set { productId = value; }
    }
    /// <summary>
    /// 产品名称
    /// </summary>
    public string ProductName
    {
        get { return productName; }
        set { productName = value; }
    }
    /// <summary>
    /// 单位价格
    /// </summary>
    public decimal Unitprice
    {
        get { return unitprice; }
        set { unitprice = value; }
    }
    /// <summary>
    /// 是否为特价【C】(特价、非特价)
    /// </summary>
    public string Special
    {
        get { return special; }
        set { special = value; }
    }
    /// <summary>
    /// 类编编号【FK】
    /// </summary>
    public int CategoryId
    {
        get { return categoryId; }
        set { categoryId = value; }
    }
}

/App_Code/ProductOper.cs

复制代码 代码如下:

using System;
using System.Collections.Generic;

using System.Data.SqlClient;
/// <summary>
///ProductOper 的摘要说明
/// </summary>
public class ProductOper
{
    /// <summary>
    /// 1,GetAll
    /// </summary>
    /// <returns></returns>
    public static IList<ProductInfo> GetAll()
    {
        IList<ProductInfo> dals = new List<ProductInfo>();
        string sql = "select productId,productName,unitprice,special,categoryId from Product order by productId desc";

        //1,创建连接对象
        SqlConnection con = new DBConnection().Con;
        //2,创建命令对象
        SqlCommand cmd = con.CreateCommand();

        //3,把sql语句付给命令对象
        cmd.CommandText = sql;

        //4,打开数据连接
        con.Open();
        try
        {
            using (SqlDataReader sdr = cmd.ExecuteReader())
            {
                while (sdr.Read())
                {
                    ProductInfo dal = new ProductInfo()
                    {
                        ProductId = sdr.GetInt32(0),
                        ProductName = sdr.GetString(1),
                        Unitprice = sdr.GetDecimal(2),
                        Special = sdr.GetString(3),
                        CategoryId = sdr.GetInt32(4)
                    };

                    dals.Add(dal);
                }
            }
        }
        finally
        {
            //,关闭数据连接(释放资源)
            con.Close();
        }
        return dals;
    }

    public static void Add(ProductInfo dal)
    {
        string sql = "insert into Product(productName,unitprice,special,categoryId) values(@productName,@unitprice,@special,@categoryId)";

        SqlConnection con = new DBConnection().Con;
        SqlCommand cmd = con.CreateCommand();

        cmd.CommandText = sql;
        //配参数
        cmd.Parameters.Add(new SqlParameter("@productName",dal.ProductName));
        cmd.Parameters.Add(new SqlParameter("@unitprice",dal.Unitprice));
        cmd.Parameters.Add(new SqlParameter("@special", dal.Special));
        cmd.Parameters.Add(new SqlParameter("@categoryId", dal.CategoryId));

        con.Open();
        try
        {
            cmd.ExecuteNonQuery();
        }
        finally {
            con.Close();
        }

    }
    public static void Update(ProductInfo dal)
    {
        string sql = "update Product set productName=@productName,unitprice=@unitprice,special=@special,categoryId=@categoryId where productId=@productId";

        SqlConnection con = new DBConnection().Con;
        SqlCommand cmd = con.CreateCommand();

        cmd.CommandText = sql;
        //配参数
        cmd.Parameters.Add(new SqlParameter("@productName", dal.ProductName));
        cmd.Parameters.Add(new SqlParameter("@unitprice", dal.Unitprice));
        cmd.Parameters.Add(new SqlParameter("@special", dal.Special));
        cmd.Parameters.Add(new SqlParameter("@categoryId", dal.CategoryId));
        cmd.Parameters.Add(new SqlParameter("@productId", dal.ProductId));
        con.Open();
        try
        {
            cmd.ExecuteNonQuery();
        }
        finally
        {
            con.Close();
        }

    }
    public static void Delete(int productId)
    {
        string sql = "delete Product where productId=@productId";

        SqlConnection con = new DBConnection().Con;
        SqlCommand cmd = con.CreateCommand();

        cmd.CommandText = sql;
        //配参数
        cmd.Parameters.Add(new SqlParameter("@productId", productId));
        con.Open();
        try
        {
            cmd.ExecuteNonQuery();
        }
        finally
        {
            con.Close();
        }

    }
    public ProductOper()
    {
        //
        //TODO: 在此处添加构造函数逻辑
        //
    }
}

,8
/Default.aspx

复制代码 代码如下:

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

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>管理页面</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <asp:HyperLink ID="hlCreate" runat="server" Text="添加" NavigateUrl="Create.aspx"></asp:HyperLink>
    <asp:GridView ID="gvwProduct" runat="server" AutoGenerateColumns="False"
            onrowcancelingedit="gvwProduct_RowCancelingEdit"
            onrowdatabound="gvwProduct_RowDataBound" onrowdeleting="gvwProduct_RowDeleting"
            onrowediting="gvwProduct_RowEditing"
            onrowupdating="gvwProduct_RowUpdating" Width="700px" AllowPaging="True"
            onpageindexchanging="gvwProduct_PageIndexChanging" PageSize="5">
        <Columns>
            <asp:TemplateField HeaderText="产品编号">
                <EditItemTemplate>
                    <asp:Label ID="Label6" runat="server" Text='<%# Bind("productId") %>'></asp:Label>
                </EditItemTemplate>
                <ItemTemplate>
                    <asp:Label ID="Label1" runat="server" Text='<%# Bind("productId") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="产品名称">
                <EditItemTemplate>
                    <asp:TextBox ID="TextBox2" runat="server" Text='<%# Bind("productName") %>'></asp:TextBox>
                </EditItemTemplate>
                <ItemTemplate>
                    <asp:Label ID="Label2" runat="server" Text='<%# Bind("productName") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="单价">
                <EditItemTemplate>
                    <asp:TextBox ID="TextBox3" runat="server" Text='<%# Bind("unitprice") %>'></asp:TextBox>
                </EditItemTemplate>
                <ItemTemplate>
                    <asp:Label ID="Label3" runat="server" Text='<%# Bind("unitprice") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="是否特价">
                <EditItemTemplate>
                    <asp:RadioButtonList ID="RadioButtonList1" runat="server"
                        RepeatDirection="Horizontal" RepeatLayout="Flow">
                        <asp:ListItem>特价</asp:ListItem>
                        <asp:ListItem>非特价</asp:ListItem>
                    </asp:RadioButtonList>
                </EditItemTemplate>
                <ItemTemplate>
                    <asp:Label ID="Label4" runat="server" Text='<%# Bind("special") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="类别编号">
                <EditItemTemplate>
                    <asp:DropDownList ID="DropDownList1" runat="server">
                    </asp:DropDownList>
                </EditItemTemplate>
                <ItemTemplate>
                    <asp:Label ID="Label5" runat="server" Text='<%# Bind("categoryId") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:CommandField ShowEditButton="True" />
            <asp:CommandField ShowDeleteButton="True" />
        </Columns>
        </asp:GridView>
    </div>
    </form>
</body>
</html>

/Default.aspx.cs

复制代码 代码如下:

using System;
using System.Web.UI.WebControls;

public partial class _Default : System.Web.UI.Page
{
    /// <summary>
    /// 1,展示产品
    /// </summary>
    private void Bind()
    {
        gvwProduct.DataSource = ProductOper.GetAll();
        gvwProduct.DataBind();
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            Bind();
        }
    }
    protected void gvwProduct_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        //删除一行数据
        Label productIdLabel = (Label)gvwProduct.Rows[e.RowIndex].FindControl("Label1");
        int productId = Convert.ToInt32(productIdLabel.Text);

        //调用删除方法
        ProductOper.Delete(productId);

        //更新数据
        Bind();
    }
    protected void gvwProduct_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            //给单元格,添加单击事件
            e.Row.Cells[6].Attributes.Add("onclick", "return confirm('您确定要删除该行数据!')");
        }
    }
    protected void gvwProduct_RowEditing(object sender, GridViewEditEventArgs e)
    {

        Label specialLabel = (Label)gvwProduct.Rows[e.NewEditIndex].FindControl("Label4");
        Label categoryIdLabel = (Label)gvwProduct.Rows[e.NewEditIndex].FindControl("Label5");

        //进入编辑模式
        gvwProduct.EditIndex = e.NewEditIndex;  //(普通模式<-)分水岭(->编辑模式)

        //更新数据
        Bind();

        RadioButtonList specialRadioButtonList = (RadioButtonList)gvwProduct.Rows[e.NewEditIndex].FindControl("RadioButtonList1");
        DropDownList categoryIdDropDownList = (DropDownList)gvwProduct.Rows[e.NewEditIndex].FindControl("DropDownList1");
        specialRadioButtonList.SelectedValue = specialLabel.Text;
        categoryIdDropDownList.DataSource = CategoryOper.GetAll();
        categoryIdDropDownList.DataTextField = "categoryName";
        categoryIdDropDownList.DataValueField = "categoryId";
        categoryIdDropDownList.DataBind();
        categoryIdDropDownList.SelectedValue = categoryIdLabel.Text;

      
    }
    protected void gvwProduct_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
    {
        //取消编辑模式
        gvwProduct.EditIndex = -1;

        //更新数据
        Bind();
    }
    protected void gvwProduct_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
        //更新数据

        //1,准备条件
        Label productIdLabel = (Label)gvwProduct.Rows[e.RowIndex].FindControl("Label6");
        TextBox productNameTextBox = (TextBox)gvwProduct.Rows[e.RowIndex].FindControl("TextBox2");
        TextBox unitpriceTextBox = (TextBox)gvwProduct.Rows[e.RowIndex].FindControl("TextBox3");
        RadioButtonList specialRadioButtonList = (RadioButtonList)gvwProduct.Rows[e.RowIndex].FindControl("RadioButtonList1");
        DropDownList categoryIdDropDownList = (DropDownList)gvwProduct.Rows[e.RowIndex].FindControl("DropDownList1");

        ProductInfo dal = new ProductInfo() {
         ProductId=Convert.ToInt32(productIdLabel.Text),
          ProductName=productNameTextBox.Text,
           Unitprice=Convert.ToDecimal(unitpriceTextBox.Text),
            Special=specialRadioButtonList.SelectedValue,
             CategoryId=Convert.ToInt32(categoryIdDropDownList.SelectedValue)
        };
        //2,调用方法
        ProductOper.Update(dal);

        //取消编辑模式
        gvwProduct.EditIndex = -1;

        //更新数据
        Bind();

    }
    protected void gvwProduct_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        gvwProduct.PageIndex = e.NewPageIndex;

        //更新数据
        Bind();
    }
}

/Create.aspx

复制代码 代码如下:

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

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>添加页面</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <asp:HyperLink ID="hlDefault" runat="server" Text="产品列表" NavigateUrl="~/Default.aspx"></asp:HyperLink>
    <fieldset>
    <legend>添加商品</legend>
    <table width="500px">
     <tr>
    <td>产品名称</td>
    <td>
        <asp:TextBox ID="txtProductName" runat="server"></asp:TextBox>
         </td>
    <td></td>
    </tr>
     <tr>
    <td>单价</td>
    <td>
        <asp:TextBox ID="txtUnitprice" runat="server"></asp:TextBox>
         </td>
    <td></td>
    </tr>
     <tr>
    <td>是否特价</td>
    <td>
        <asp:RadioButtonList ID="rblSpecial" runat="server"
            RepeatDirection="Horizontal" RepeatLayout="Flow">
            <asp:ListItem>特价</asp:ListItem>
            <asp:ListItem Selected="True">非特价</asp:ListItem>
        </asp:RadioButtonList>
         </td>
    <td></td>
    </tr>
     <tr>
    <td>类别</td>
    <td>
        <asp:DropDownList ID="dropCategory" runat="server">
        </asp:DropDownList>
         </td>
    <td></td>
    </tr>
     <tr>
    <td></td>
    <td>
        <asp:Button ID="btnAdd" runat="server" Text="添加" onclick="btnAdd_Click" />
         </td>
    <td></td>
    </tr>
    </table>
    </fieldset>
    </div>
    </form>
</body>
</html>

/Create.aspx.cs

复制代码 代码如下:

using System;

public partial class Create : System.Web.UI.Page
{
    /// <summary>
    /// 1,类别列表
    /// </summary>
    private void Bind()
    {
        dropCategory.DataSource = CategoryOper.GetAll();
        dropCategory.DataTextField = "categoryName";
        dropCategory.DataValueField = "categoryId";
        dropCategory.DataBind();
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            Bind();
        }
    }
    protected void btnAdd_Click(object sender, EventArgs e)
    {
        ProductInfo dal = new ProductInfo() {
         ProductName=txtProductName.Text.Trim(),
          Unitprice=Convert.ToDecimal(txtUnitprice.Text.Trim()),
           Special=rblSpecial.SelectedValue,
            CategoryId=Convert.ToInt32(dropCategory.SelectedValue)
        };

        //调用添加方法
        ProductOper.Add(dal);

        Response.Redirect("~/Default.aspx");
    }
}

作者:ylbtech
出处:http://ylbtech.cnblogs.com/

时间: 2024-09-17 04:43:43

asp.net中gridview的查询、分页、编辑更新、删除的实例代码_实用技巧的相关文章

Asp.net中安全退出时清空Session或Cookie的实例代码_实用技巧

概览: 网站中点击退出,如果仅仅是重定向到登录/出页面,此时在浏览器地址栏中输入登录后的某个页面地址如主页,你会发现不用登录就能访问.这种所谓的退出并不是安全的. 那么怎样做到安全退出呢? 那就是点击退出后清空相应的Session或Cookie. 清空Session的代码: Session.Clear(); Session.Abandon(); 清除Cookie的正确代码(假设Cookie名称为UserInfo): if (Request.Cookies["UserInfo"] !=

灵活掌握asp.net中gridview控件的多种使用方法(上)_实用技巧

灵活使用asp.net中gridview控件的方法有很多种,本文内容很富,希望大家都能有所收获. 1.GridView无代码分页排序: 效果图: 小提示: 1.AllowSorting设为True,aspx代码中是AllowSorting="True": 2.默认1页10条,如果要修改每页条数,修改PageSize即可,在aspx代码中是PageSize="12". 3.默认的是单向排序的,右击GridView弹出"属性",选择AllowSort

灵活掌握asp.net中gridview控件的多种使用方法(下)_实用技巧

继续上篇文章的学习<灵活掌握asp.net中gridview控件的多种使用方法(上)>,在此基础上巩固gridview控件的操作使用,更上一层楼. 11.GridView实现用"..."代替超长字符串:效果图:   解决方法:数据绑定后过滤每一行即可 for (int i = 0; i <= GridView1.Rows.Count - 1; i++) { DataRowView mydrv; string gIntro; if (GridView1.PageInde

asp.net实现上传文件显示本地绝对路径的实例代码_实用技巧

页面代码主要就是JSview plaincopy to clipboardprint 复制代码 代码如下: <head runat="server">     <title>无标题页</title>     <mce:script language="javascript" type="text/javascript"><!--      function Imagesrc()      { 

AspNetPager+GridView实现分页的实例代码_实用技巧

.框架是.NET Framework 4.0.一共为三个部分: 前台页面设计代码.前台页面程序代码.css样式.其中数据库连接操作用了DB类(连接语句),SQLHelper(微软的数据库操作类)效果图: 前台页面设计代码 复制代码 代码如下: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="TestWebSit

ASP.NET中的几种弹出框提示基本实现方法_实用技巧

我们在.NET程序的开发过程中,常常需要和用户进行信息交互,比如执行某项操作是否成功,"确定"还是"取消",以及选择"确定"或"取消"后是否需要跳转到某个页面等,下面是本人对常用对话框使用的小结,希望对大家有所帮助,同时也欢迎大家补充. (1) 点击页面上的按钮,弹出一个对话框提示是"确定"还是"取消"操作,我们采用在按钮中添加属性来完成: 举例如下: 复制代码 代码如下: public

ASP.NET中的Inherits、CodeFile、CodeBehind的区别详解_实用技巧

Inherits.CodeFile.CodeBehind 在 ASP.NET 中使用代码隐藏方法来设计Web 窗体,可使页代码能够更清晰地从 HTML 内容中分离到完全单独的文件中. 通常一个 @page 指令如下: 复制代码 代码如下: < %@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="WebApplic

asp.net中将数据库绑定到DataList控件的实现方法与实例代码_实用技巧

解决方法1: datalist databind() 解决方法2: 查看MSDN上的详细说明资料 解决方法3: 在DataList的模板中用table表格,如: 复制代码 代码如下: <asp:DataList ID="dlDetailedInfo" runat="server" OnItemDataBound="dlDetailedInfo_ItemDataBound" Width="100%"> <Ite

asp.net中利用Jquery+Ajax+Json实现无刷新分页的实例代码_实用技巧

复制代码 代码如下: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="AjaxJson.aspx.cs" Inherits="AjaxJson" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR