gridView(二)实现手动数据源的编辑、删除


在上一篇博客中举的例子是用的sqldatasource作为数据源的,但是在实际中,我们还是往往要用到手动的数据源的,这篇博客就来说说如果用手动数据源来为gridview编辑、删除数据。

说明:

1、所用数据库为pubs数据库中的authors表。

2、实现手动设置数据源的更新、删除等操作。

界面设置:

gridView(二)实现手动数据源的编辑、删除_第1张图片

页面的后台代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Configuration;
using System.Data;

namespace gridView
{
    public partial class _4 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                bind();
            }
        }
        private void bind()
        {
            SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["pubsConnectionString"].ConnectionString);
            SqlDataAdapter sda = new SqlDataAdapter("select * from authors", con);
            DataSet ds = new DataSet();
            sda.Fill(ds, "authors");

            GridView1.DataSource=ds.Tables["authors"];
            GridView1.AllowPaging = true;
            GridView1.PageSize = 5;
            GridView1.DataBind();

            if (GridView1.PageIndex==0)
            {
                Button1.Enabled = false;
                Button2.Enabled = false;
            }
            else
            {
                Button1.Enabled = true;
                Button2.Enabled = true;
            }
            if (GridView1.PageIndex==GridView1.PageCount-1)
            {
                Button3.Enabled = false;
                Button4.Enabled = false;
            }
            else
            {
                Button3.Enabled = true;
                Button4.Enabled = true;
            }
        }
        private int cmd(string query)
        {
            SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["pubsConnectionString"].ConnectionString);
            using (con)
            {
                con.Open();
                SqlCommand cmd = new SqlCommand(query, con);
                return cmd.ExecuteNonQuery();
            }
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            switch (((Button)sender).CommandName.ToString())
            {
                case "first":
                    GridView1.PageIndex = 0;
                    break;
                case "prev":
                    GridView1.PageIndex = GridView1.PageIndex - 1;
                    break;
                case "last":
                    GridView1.PageIndex = GridView1.PageCount-1;
                    break;
                case "next":
                    GridView1.PageIndex = GridView1.PageIndex + 1;
                    break;
            }
            bind();
        }

        protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
        {
            GridView1.EditIndex = e.NewEditIndex;
            bind();
        }

        protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            string id = GridView1.DataKeys[e.RowIndex]["au_id"].ToString();
            string fname = ((TextBox)GridView1.Rows[e.RowIndex].FindControl("TextBox1")).Text;
            string city = ((TextBox)GridView1.Rows[e.RowIndex].FindControl("TextBox2")).Text;
            string phone = ((TextBox)GridView1.Rows[e.RowIndex].FindControl("TextBox3")).Text;

            string query = "update authors set au_fname='"+fname+"',city='"+city+"',phone='"+phone+"' where au_id='"+id+"'";

            if (cmd(query)>0)
            {
                GridView1.EditIndex = -1;
                bind();
            }
        }

        protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
        {
            GridView1.EditIndex = -1;
            bind();
        }

        protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            //得到该行的主键
            string id = GridView1.DataKeys[e.RowIndex]["au_id"].ToString();
            string query = "delete from authors where au_id='"+id+"'";

            if (cmd(query)>0)
            {
                GridView1.EditIndex = -1;
                bind();
            }
        }

        


    }
}


代码其实挺简单的,一看就能看懂,不过我还是建议自己动手去做做,这样肯定会有新的收获。比如说,通过做这个小例子,对gridview的一些属性有新的认识,比如说以前的时候一直不明白“自动生成字段”是什么意思,现在看来原来是这么的简单,呵呵。

由于博客篇幅有限,没有看懂或者想要源码的博友可以留下您的邮箱,我们大家互相学习!

你可能感兴趣的:(GridView)