1. 程式人生 > >關於ASP.NET中GridView控制元件的編輯和刪除問題!

關於ASP.NET中GridView控制元件的編輯和刪除問題!

第一種直接用SqlDataSource繫結實現編輯和刪除!

<head runat="server">

    <title>無標題頁</title>

</head>

<body>

    <form id="form1" runat="server">

        <asp:GridView ID="GridView1" runat="server" DataKeyNames="id" DataSourceID="SqlDataSource1" AutoGenerateDeleteButton="True" AutoGenerateEditButton="True" AutoGenerateColumns="False">

            <Columns>

                <asp:BoundField DataField="id" SortExpression="id" ReadOnly=true/>

                <asp:BoundField DataField="name" SortExpression="name"/>

                <asp:BoundField DataField="pwd" SortExpression="pwd" />

            </Columns>

        </asp:GridView>

        <asp:SqlDataSource ID="SqlDataSource1" runat="server" ProviderName="System.Data.SqlClient" ConnectionString='server=.;uid=sa;database=test'

            SelectCommand="select id,name,pwd from usertab" DeleteCommand="delete from usertab where id = @id"

             UpdateCommand="update usertab set name = @name,pwd = @pwd where id = @id ">

            <DeleteParameters>

            <asp:ControlParameter ControlID="GridView1" Name="id" PropertyName="SelectedValue"/>

            </DeleteParameters>

            <UpdateParameters>

            <asp:ControlParameter ControlID="GridView1" DefaultValue="id" Name="id" PropertyName="SelectedValue" />

                <asp:ControlParameter ControlID="GridView1" DefaultValue="name" Name="name" PropertyName="SelectedValue" />

                <asp:ControlParameter ControlID="GridView1" DefaultValue="pwd" Name="pwd" PropertyName="SelectedValue" />

            </UpdateParameters>

            </asp:SqlDataSource>

    </form>

</body>

</html>

這個就是SqlDataSource和GridView的配合,

第二種是在後臺程式碼中實現的:

-------------------------------------------

using System;

using System.Data;

using System.Configuration;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

using System.Data.SqlClient;

public partial class _Default : System.Web.UI.Page

{

     SqlConnection sqlcon;

     SqlCommand sqlcom;

     string strCon = "Data Source=(local);Database=資料庫名;Uid=帳號;Pwd=密碼";

     protected void Page_Load(object sender, EventArgs e)

     {

         if (!IsPostBack)

         {

             bind();

         }

     }

     protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)

     {

         GridView1.EditIndex = e.NewEditIndex;

         bind();

     }

//刪除

     protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)

     {

         string sqlstr = "delete from 表 where id='" + GridView1.DataKeys[e.RowIndex].Value.ToString() + "'";

         sqlcon = new SqlConnection(strCon);

         sqlcom = new SqlCommand(sqlstr,sqlcon);

         sqlcon.Open();

         sqlcom.ExecuteNonQuery();

         sqlcon.Close();

         bind();

     }

//更新

     protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)

     {

         sqlcon = new SqlConnection(strCon);

         string sqlstr = "update 表 set 欄位1='"

             + ((TextBox)(GridView1.Rows[e.RowIndex].Cells[1].Controls[0])).Text.ToString().Trim() + "',欄位2='"

             + ((TextBox)(GridView1.Rows[e.RowIndex].Cells[2].Controls[0])).Text.ToString().Trim() + "',欄位3='"

             + ((TextBox)(GridView1.Rows[e.RowIndex].Cells[3].Controls[0])).Text.ToString().Trim() + "' where id='"

             + GridView1.DataKeys[e.RowIndex].Value.ToString() + "'";

         sqlcom=new SqlCommand(sqlstr,sqlcon);

         sqlcon.Open();

         sqlcom.ExecuteNonQuery();

         sqlcon.Close();

         GridView1.EditIndex = -1;

         bind();

     }

//取消

     protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)

     {

         GridView1.EditIndex = -1;

         bind();

     }

//繫結

     public void bind()

     {

         string sqlstr = "select * from 表";

         sqlcon = new SqlConnection(strCon);

         SqlDataAdapter myda = new SqlDataAdapter(sqlstr, sqlcon);

         DataSet myds = new DataSet();

         sqlcon.Open();

         myda.Fill(myds, "表");

         GridView1.DataSource = myds;

         GridView1.DataKeyNames = new string[] { "id" };//主鍵

         GridView1.DataBind();

         sqlcon.Close();

     }

}

前臺主要程式碼:

                             ... ...

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" CellPadding="4"

                         ForeColor="#333333" GridLines="None" OnRowDeleting="GridView1_RowDeleting"

OnRowEditing="GridView1_RowEditing"

                         OnRowUpdating="GridView1_RowUpdating" OnRowCancelingEdit="GridView1_RowCancelingEdit">

                         <FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />

                         <Columns>

                             <asp:BoundField DataField="身份證號碼" HeaderText="使用者ID" ReadOnly="True" />

                             <asp:BoundField DataField="姓名" HeaderText="使用者姓名" />

                             <asp:BoundField DataField="員工性別" HeaderText="性別" />

                             <asp:BoundField DataField="家庭住址" HeaderText="家庭住址" />

                             <asp:CommandField HeaderText="選擇" ShowSelectButton="True" />   

         <asp:CommandField HeaderText="編輯" ShowEditButton="True" />

                             <asp:CommandField HeaderText="刪除" ShowDeleteButton="True" />      

                         </Columns>

                         <RowStyle ForeColor="#000066" />

                         <SelectedRowStyle BackColor="#669999" Font-Bold="True" ForeColor="White" />

                         <PagerStyle BackColor="White" ForeColor="#000066" HorizontalAlign="Left" />

                         <HeaderStyle BackColor="#006699" Font-Bold="True" ForeColor="White" />

                     </asp:GridView>