GridView自定義編輯、刪除

在HTML頁裏:

<asp:GridView ID="GridView1" runat="server" OnPageIndexChanging="GridView1_PageIndexChanging"

        AutoGenerateColumns="False"  AllowPaging="True" PageSize="5" OnRowDeleting="GridView1_RowDeleting" DataKeyNames="uid" OnRowCancelingEdit="GridView1_RowCancelingEdit" OnRowUpdating="GridView1_RowUpdating" OnRowEditing="GridView1_RowEditing" >

        <Columns>

                    <asp:TemplateField HeaderText="名稱" SortExpression="uname">

                                <EditItemTemplate>

                                    <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("uname") %>'></asp:TextBox>

                                </EditItemTemplate>

                                <ItemTemplate>

                                <%# DataBinder.Eval(Container.DataItem, "uname")%></a>

                                </ItemTemplate>

                            </asp:TemplateField>  

                    <asp:TemplateField HeaderText="年齡" SortExpression="uname">

                        <EditItemTemplate>

                            <asp:TextBox ID="txtAge" runat="server" Text='<%# Bind("age") %>'></asp:TextBox>                       

                        </EditItemTemplate>

                        <ItemTemplate>

                            <asp:Label ID="Label2" runat="server" Text='<%# Bind("age") %>'></asp:Label>

                        </ItemTemplate>

                    </asp:TemplateField>

                    <asp:TemplateField HeaderText="性別" SortExpression="sex">

                        <EditItemTemplate>

                            <asp:TextBox ID="txtSex" runat="server" Text='<%# Bind("sex") %>'></asp:TextBox>                       

                        </EditItemTemplate>

                        <ItemTemplate>

                            <asp:Label ID="Label3" runat="server" Text='<%# Bind("sex") %>'></asp:Label>

                        </ItemTemplate>

                    </asp:TemplateField>

                    <asp:TemplateField HeaderText="操作" ShowHeader="False">

                        <EditItemTemplate>

                            <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="True" CommandName="Update"

                                 Text="更新"></asp:LinkButton>

                            <asp:LinkButton ID="LinkButton2" runat="server" CausesValidation="False" CommandName="Cancel"

                                Text="取消"></asp:LinkButton>

                        </EditItemTemplate>

                        <ItemTemplate>

                            <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False" CommandName="Edit"

                                Text="編輯" ></asp:LinkButton>                        

                            <asp:LinkButton ID="LinkButton3" runat="server" CausesValidation="False" CommandName="Delete"

                                Text="刪除" OnClientClick="return confirm('確認要刪除嗎?');"></asp:LinkButton>

                        </ItemTemplate>

                        </asp:TemplateField>

                </Columns>

        </asp:GridView>

 在後臺代碼裏:

public void GridViewDataBind()

    {

        try

        {            

            SqlDataAdapter da = new SqlDataAdapter("select * from test", conn);

            DataSet ds = new DataSet();

            da.Fill(ds, "customers");

            if (ds.Tables[0].Rows.Count == 0)

            {

                AddDummyData(ds);

            }

            GridView1.DataSource = ds.Tables["customers"];

            GridView1.AllowPaging = true;

            GridView1.PageSize = 5;

            GridView1.DataBind();

        }

        catch(Exception ex)

        {

            ex.ToString();

        }

    }

    protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)

    {

        GridView1.PageIndex = e.NewPageIndex;

        GridViewDataBind();

    }

    private void AddDummyData(DataSet ds)

    {

        //如果沒有數據顯示空行

        DataTable dt = ds.Tables[0];



        DataRow newRow = dt.NewRow();

        dt.Rows.Add(newRow);

    }



    protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)

    {//刪除行

        //得到ID號

        string rowToDelete = GridView1.DataKeys[e.RowIndex].Values[0].ToString();



        string str = "DELETE FROM test where uid=" + "'" + rowToDelete + "'" + "";

        SqlDataAdapter da = new SqlDataAdapter(str,conn);

        DataSet ds = new DataSet();

        da.Fill(ds, "customers");

        GridView1.DataSource = ds.Tables["customers"];

        GridView1.DataBind();

        GridViewDataBind();

    }

    protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)

    {//取消編輯狀態

        GridView1.EditIndex = -1;

        GridViewDataBind();

    }

    protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)

    {

        string ID = GridView1.DataKeys[e.RowIndex].Values[0].ToString();

        string str = "update test set uname=@uname,age=@age,sex=@sex where uid='"+ID+"'";

        SqlCommand comm = new SqlCommand(str, conn);

        SqlParameter parm1 = new SqlParameter("@uname", SqlDbType.VarChar, 50);

        parm1.Value = ((TextBox)GridView1.Rows[e.RowIndex].FindControl("TextBox1")).Text;

        SqlParameter parm2 = new SqlParameter("@age", SqlDbType.Int);

        parm2.Value = ((TextBox)GridView1.Rows[e.RowIndex].FindControl("txtAge")).Text;

        SqlParameter parm3 = new SqlParameter("@sex", SqlDbType.VarChar,50);

        parm3.Value = ((TextBox)GridView1.Rows[e.RowIndex].FindControl("txtSex")).Text;

        comm.Parameters.Add(parm1);

        comm.Parameters.Add(parm2);

        comm.Parameters.Add(parm3);

        conn.Open();

        comm.ExecuteNonQuery();

        conn.Close();



        this.GridView1.EditIndex = -1;

        GridViewDataBind(); 

    }

    protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)

    {

        GridView1.EditIndex = e.NewEditIndex;

        GridViewDataBind();

    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章