Gridview中两种数据操作方式

数媒管理团队 付姝娴

ASP.NET开发中,显示表格数据是一项经常要做的任务,ASP.NET也提供了许多工具来在网格中显示表格数据,例如GridView控件。GridView控件有称网格视图控件,该控件可以呈现多列、完全模板化的表格,其功能比datalist控件更强大。

通过使用GridView控件,用户可以通过数据源自动绑定和显示数据,并对数据进行选择、编辑和删除等操作。其中这些操作也可使用控件的自带的处理方式,也可用户自定义的方法。

使用控件自动处理方式

新建一个ASP.NET web 应用程序,在其Default.aspx界面中添加一个GridView控件,其IDGridView1,在Default.aspx.cs中绑定数据源:

protected void Page_Load(object sender, EventArgs e)

    {

this.GridView1.DataSource = SelectAll();   

this.GridView1.DataBind();

    }

public DataTable SelectAll()

    {

        SqlConnection con = db.creatcon();

        SqlDataAdapter sda = new SqlDataAdapter("select * from [Users]", con);

        DataSet ds = new DataSet();

        sda.Fill(ds, "Users");

        return ds.Tables["Users"];

    }

在其属性面板里设置

AutoGenerateColumns="False" AutoGenerateDeleteButton="True"

AutoGenerateEditButton="True"

并添加编辑、删除响应函数:

OnRowCancelingEdit="GridView1_RowCancelingEdit1" OnRowEditing="GridView1_RowEditing1" 

OnRowUpdating="GridView1_RowUpdating1" 

DataKeyNames="ID" 

OnRowDeleted="GridView1_RowDeleted" 

OnRowDeleting="GridView1_RowDeleting"

添加显示列:

<Columns>

            <asp:BoundField DataField="ID" HeaderText="用户编号" ReadOnly=True />

            <asp:BoundField DataField="Name" HeaderText="姓名" />

            <asp:BoundField DataField="Grade" HeaderText="班级" />          

  </Columns>

注意:DataField中的名称应该和连接的数据库中字段相同

Default.aspx.cs中实现响应函数:

protected void GridView1_RowCancelingEdit1(object sender, GridViewCancelEditEventArgs e)

    {

         this.GridView1.EditIndex = -1;

  this.GridView1.DataSource = SelectAll();   

this.GridView1.DataBind();

    

    }

    protected void GridView1_RowEditing1(object sender, GridViewEditEventArgs e)

    {

        this.GridView1.EditIndex = e.NewEditIndex;

 this.GridView1.DataSource = SelectAll();   

this.GridView1.DataBind();

    }

    protected void GridView1_RowUpdating1(object sender, GridViewUpdateEventArgs e)

    {

    }

protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)

    {

        int ID = Convert.ToInt32(GridView1.DataKeys[e.RowIndex].Value.ToString());

        //DeleteUser(ID);  删除用户操作

        GridView1.DataSource = SelectAll();

        GridView1.DataBind();

    }

但自动编辑、删除界面单一,当不满足用户需求时,需要用户自定义操作:

在其属性面板里设置:

AutoGenerateColumns="False" AutoGenerateDeleteButton=" False "

AutoGenerateEditButton=" False "

添加列:

<Columns>

            <asp:BoundField DataField="ID" HeaderText="用户编号" ReadOnly=True />

            <asp:BoundField DataField="Name" HeaderText="姓名" />

            <asp:BoundField DataField="Grade" HeaderText="班级" />          

  </Columns>

添加相应操作:

<asp:HyperLinkField DataNavigateUrlFields="ID" HeaderText="修改" 

Text="修改" DataNavigateUrlFormatString="EditNews.aspx? ID={0}" />

<asp:TemplateField HeaderText="删除" ShowHeader="False">

       <ItemTemplate>

           <asp:LinkButton ID="LinkButton1" runat="server" CommandArgument='<%# Eval("ID") %>' CommandName="Del" OnClientClick="return confirm('您确定要删除吗?');">删除</asp:LinkButton>

        </ItemTemplate>

 </asp:TemplateField>                             

此时在响应事件中添加RowCommand数:GridView1_RowCommand(object sender, GridViewCommandEventArgs e)

 点击GridView行中的删除命令 弹出询问对话框,点击确定,触发该事件:

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)

    {

        if (e.CommandName == "Del")

        {

           int FID = Convert.ToInt32(e.CommandArgument);

            //相应操作

        }

}

点击GridView行中的编辑命令,跳至指定界面EditNews.aspx

获取传递的值:int FID =(Request.QueryString["ID"]).ToString();

即可完成一系列的操作。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值