Gridview中两种数据操作方式

来源:互联网 发布:js split函数转数组 编辑:程序博客网 时间:2024/05/28 23:12

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

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


使用控件自动处理方式


新建一个ASP.NET web 应用程序,在其Default.aspx界面中添加一个GridView控件,其ID为GridView1,在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();

即可完成一系列的操作。

 

原创粉丝点击