在DataList那个案例的基础上,进行GridView控件的使用
浏览器中的效果图:
第一步:
新建一个窗体,拖入一个GridView控件,然后直接可以编写后端代码(右键查看代码)
代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BLL;
namespace DataListExample
{
public partial class WebForm2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindGridView();
}
}
private void BindGridView()
{
this.GridView1.DataSource = ProductBLL.SelectProduct();
this.GridView1.DataBind();
}
}
}
第二步:
到设计视图中去,选择编辑列
自动生成字段前面的勾要取消
注意,如果是日期类型的数据,并且你只想显示年月日这样的中文,
接下来就是GridView控件的删除操作:
还是一样的,需要在DAL层去写删除的方法,以及BLL层
首先找到ProductDAL这个类,写删除方法,通过id进行删除
BLL层的ProductBLL类中代码:
接下进到窗体的设计界面,添加一个删除字段
然后找到GridView1的RowDeleting事件
进到后台代码(右键,查看代码):
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BLL;
namespace DataListExample
{
public partial class WebForm2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindGridView();
}
}
private void BindGridView()
{
this.GridView1.DataSource = ProductBLL.SelectProduct();
this.GridView1.DataBind();
}
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
//找到这一行的id
int productID = int.Parse(this.GridView1.Rows[e.RowIndex].Cells[0].Text);
//调用bll层的方法,传入id,如果返回true,则删除成功
if (ProductBLL.DeleteProductByProcuctID(productID))
{
//提示删除成功之前先重新绑定一下数据
this.GridView1.DataSource = ProductBLL.SelectProduct();
this.GridView1.DataBind();
ClientScript.RegisterStartupScript(this.GetType(), "DelSuccess", "<script>alert('删除成功')</script>");
}
else
{
ClientScript.RegisterStartupScript(this.GetType(), "DelFail", "<script>alert('删除失败')</script>");
}
}
}
}
效果图:
点击删除:
接下来 就是讲编辑功能,
这时页面已经多了一个编辑字段,这时就可以在浏览器中运行了,但是当你点击编辑时,就会报下图所示错误,所以我们就需要去写gridview控件的RowEditing事件。
代码如下:BindGridView()是之前写的方法,用来绑定数据
这时,点击编辑的时候就不会报错了,但是当我们点击取消的时候,又会报如下错误:
这时,就需要去RowCancelingEdit中去写代码:
当我们点击编辑的时候,我们会发现编号这一列也可以进行编辑,但是如果我们不想让它可以编辑,该如何做呢?
这时,当我们点击编辑的时候,编号这一列就不可以进行编辑了
同样的当我们点击更新的时候,会报以下的错误
所以我们需要去找到对应的事件:
相应的DAL层也应该有对应更新的方法