ASP.NET GridView详解(简单易懂)

@个人原创,仅供参考。有问题可留言。

  @全体成员:提供据体图布局和源代码供大家参考,如有不理解的地方可以下载压缩包体验。
  个人原创,仅供参考。
  压缩包地址:https://download.csdn.net/download/ganyonjie/13697083 欢迎下载

最后实现后的界面如下:

在这里插入图片描述

  1. 数据列的新增,左上栏表示控件的类型,左下为新增的列,右边为属性。
    在这里插入图片描述
  2. 连接sql数据库:
    实现执行sql 命令的语句,如插入删除:
/* author:win杰
*  time:2020/12/12
*  @版权所有,仅供参考
*/
public int cmd(string sql) {
			# 声明
            SqlConnection con = new SqlConnection();
            con.ConnectionString = "server =.; database = System; integrated security = SSPI; uid = sa; pwd = sa";
            con.Open();
            # 执行sql
            SqlCommand sqlcmd = new SqlCommand(sql, con);
            int count = 0;
            try{
            	count = sqlcmd.ExecuteNonQuery();
            }
			# 关闭连接
            con.Close();
			# 返回执行成功的条数
            return count;
        }

实现查询等需要返回数据的操作:

/* author:win杰
*  time:2020/12/12
*  @版权所有,仅供参考
*/
public DataTable searchtable(string sql) {
			# 变量声明
            SqlConnection con = new SqlConnection();
            con.ConnectionString = "server =.; database = System; integrated security = SSPI; uid = sa; pwd = gt";
            con.Open();
			# 获取数据
            SqlCommand sqlcmd = new SqlCommand(sql, con);
            SqlDataReader read = sqlcmd.ExecuteReader();
            DataTable dt = new DataTable();
            dt.Load(read);
			# 关闭连接资源
            read.Close();
            con.Close();

            return dt;
        }

实现界面数据刷新操作:

/* author:win杰
*  time:2020/12/12
*  @版权所有,仅供参考
*/
protected void Refresh(string sql = null,string sort = null)
        {
        	# 初始化变量
            sql = sql ?? "select * from Patient";
            sort = sort ?? "id_card ASC";
            this.GridView1.DataSourceID = null;
            # 将取到的数据进行排序
            DataView view = searchtable(sql).DefaultView;
            view.Sort = sort;
            # 数据绑定
            GridView1.DataSource = view;
            GridView1.DataBind();
        }
  1. 实现点击对应的表头产生排序的方法:
/* author:win杰
*  time:2020/12/12
*  @版权所有,仅供参考
*/
protected void Page_Load(object sender, EventArgs e)
        {
        	# 程序加载时默认升序排序
            if (!IsPostBack)
            {
                ViewState["OrderDire"] = "ASC";
                this.Refresh();
            }
        }
/* author:win杰
*  time:2020/12/12
*  @版权所有,仅供参考
*/
protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
        {      
        	# 实现前后两次排序相反   
            if (ViewState["OrderDire"].ToString() == "ASC")
                ViewState["OrderDire"] = "DESC";
            else
                ViewState["OrderDire"] = "ASC";
			# 舒适化排序方法
            string s = e.SortExpression + " " + (string)ViewState["OrderDire"];
            # 刷新数据
            this.Refresh(null,s);
        }
  1. 实现按下查询按钮筛选结果操作:
/* author:win杰
*  time:2020/12/12
*  @版权所有,仅供参考
*/
protected void Button1_Click(object sender, EventArgs e)
        {
            string sql = null;
            # 获取主键
            string name = GridView1.Columns[0].SortExpression;
            if (TextBox1.Text.Trim()!="")
                sql = "select * from Patient where "+name+"='"+TextBox1.Text.Trim()+"'";
            # 数据刷新
            this.Refresh(sql);
        }
  1. 实现页面跳转功能:
/* author:win杰
*  time:2020/12/12
*  @版权所有,仅供参考
*/
 protected void Button2_Click(object sender, EventArgs e)
        {
        	# 通过server跳转页面
            Server.Transfer("./PatientInformation.aspx", true);
        }
  1. 实现点击对应行的删除按钮执行删除功能:
/* author:win杰
*  time:2020/12/12
*  @版权所有,仅供参考
*/
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
        	# 获取主键信息
            string id = GridView1.Rows[e.RowIndex].Cells[0].Text.ToString().Trim();
            string name = GridView1.Columns[0].SortExpression;
            string sql = "delete from Patient where "+name+" = '"+id+"'";
            # 执行sql语句
            cmd(sql);
			# 数据刷新
            this.Refresh();
        }
  1. 实现点击对应行的编辑按钮启用编辑功能:
/* author:win杰
*  time:2020/12/12
*  @版权所有,仅供参考
*/
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
        {
        	# 将选中列更改为输入框
            GridView1.EditIndex = e.NewEditIndex;
			# 数据刷新
            this.Refresh();
        }
  1. 实现点击对应行的更新按钮更新数据:
/* author:win杰
*  time:2020/12/12
*  @版权所有,仅供参考
*/
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
        	# 获取主键的name和值 表格中存在的最大列数
            string id = GridView1.Rows[e.RowIndex].Cells[0].Text.ToString().Trim();
            string name = GridView1.Columns[0].SortExpression;
            int max = GridView1.Rows[e.RowIndex].Cells.Count - max_buttonLine;
            # 对sql语句进行拼接
            string sql = "update Patient set ";
            for (int i = 1; i < max; i++)
            {
           		# 排除单元格为空的情况
           		# Server.HtmlDecode增加安全性
                if (GridView1.Rows[e.RowIndex].Cells[i].Text.Trim() != "&nbsp;")
                    sql += GridView1.Columns[i].SortExpression + " = '" + Server.HtmlDecode(((TextBox)GridView1.Rows[e.RowIndex].Cells[i].Controls[0]).Text.ToString().Trim()) + "',";
            }
			# 去掉最后的,
            sql = sql.Substring(0, sql.Length - 1);
            sql += " where " + name + " = '" + id + "'";

            try
            {
            	# 执行sql语句
                cmd(sql);
            }
            catch (Exception ex)
            {
            	# 弹出错误提示框
                Response.Write("<script>alert('编辑出错,请重新填写');</script>");
            }
            # 退出编辑模式
            GridView1.EditIndex = -1;
            # 刷新数据
            this.Refresh();
        }
  1. 实现点击对应行取消按钮退出编辑状态:
/* author:win杰
*  time:2020/12/12
*  @版权所有,仅供参考
*/
protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
        {
        	# 退出编辑模式
            GridView1.EditIndex = -1;
            # 刷新数据
            this.Refresh();
        }
  1. 实现加载时刷新表格样式:
/* author:win杰
*  time:2020/12/12
*  @版权所有,仅供参考
*/
 protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
        	# 获取当前表格中的最大列数
            int max = e.Row.Cells.Count;
            # 按列对表格设置样式
            for(int i=0;i< max; i++)
            {

                    if (e.Row.RowType == DataControlRowType.DataRow)
                    {
                        e.Row.Cells[i].Attributes.Add("style", "border:1px dotted red");
                    }
            }
            //首先判断是否是数据行
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                //当鼠标停留时更改背景色
                e.Row.Attributes.Add("onmouseover", "c=this.style.backgroundColor;this.style.backgroundColor='#00A966'");
                //当鼠标移开时还原背景色
                e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=c");
            }

        }
  1. 实现数据多情况下的分页功能:
/* author:win杰
*  time:2020/12/12
*  @版权所有,仅供参考
*/
        protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
        	# 开启简单排序功能
            GridView1.AllowSorting = true;
            # 获取新的index值
            GridView1.PageIndex = e.NewPageIndex;
            # 数据绑定
            GridView1.DataBind();
        }

至此,完。谢谢观看。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ganyonjie

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值