GridView绑定了一个数据库
添加行之后得到的gridview,重新将gridview 绑定到数据库中去 用objectDateSouce如何实现希望提供前台和后台代码谢谢

解决方案 »

  1.   

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head id="Head1" runat="server">
        <title>MSPetShop4.Product</title>
    </head>
    <body>
        <form id="form1" runat="server">
            <div>
                &nbsp;
                <asp:Button ID="Button1" runat="server" Text="添加空行" OnClick="Button1_Click1" />
                <asp:Button ID="Button2" runat="server" OnClick="Button2_Click1" Text="保存该行" />
                <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" OnRowDeleting="GridView1_RowDeleting"
                    OnRowEditing="GridView1_RowEditing" OnRowUpdating="GridView1_RowUpdating" OnRowCancelingEdit="GridView1_RowCancelingEdit"
                    OnSelectedIndexChanged="GridView1_SelectedIndexChanged" DataKeyNames="id">
                    <Columns>
                        <asp:TemplateField HeaderText="ProductId">
                            <ItemTemplate>
                                <asp:TextBox ID="Label1" runat="server" Text='<%# Bind("ProductId")%>'></asp:TextBox>
                            </ItemTemplate>
                            <EditItemTemplate>
                                <asp:Label ID="Text1" runat="server" Text='<%# Bind("ProductId")%>'></asp:Label>
                            </EditItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="CategoryId">
                            <ItemTemplate>
                                <asp:TextBox ID="Label2" runat="server" Text='<%# Bind("CategoryId")%>'></asp:TextBox>
                            </ItemTemplate>
                            <EditItemTemplate>
                                <asp:TextBox ID="Text2" runat="server" Text='<%# Bind("CategoryId")%>'></asp:TextBox>
                            </EditItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="Name">
                            <ItemTemplate>
                                <asp:TextBox ID="Label3" runat="server" Text='<%# Bind("Name")%>'></asp:TextBox>
                            </ItemTemplate>
                            <EditItemTemplate>
                                <asp:TextBox ID="Text3" runat="server" Text='<%# Bind("Name")%>'></asp:TextBox>
                            </EditItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="Descn">
                            <ItemTemplate>
                                <asp:TextBox ID="Label4" runat="server" Text='<%# Bind("Descn")%>'></asp:TextBox>
                            </ItemTemplate>
                            <EditItemTemplate>
                                <asp:TextBox ID="Text4" runat="server" Text='<%# Bind("Descn")%>'></asp:TextBox>
                            </EditItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="Image">
                            <ItemTemplate>
                                <asp:TextBox ID="Label5" runat="server" Text='<%# Bind("Image")%>'></asp:TextBox>
                            </ItemTemplate>
                            <EditItemTemplate>
                                <asp:TextBox ID="Text5" runat="server" Text='<%# Bind("Image")%>'></asp:TextBox>
                            </EditItemTemplate>
                        </asp:TemplateField>
                        <asp:CommandField ShowEditButton="True" />
                        <asp:CommandField ShowDeleteButton="True" />
                    </Columns>
                </asp:GridView>
                <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:MSPetShop4ConnectionString %>"
                    SelectCommand="SELECT * FROM [Product]" ></asp:SqlDataSource>
                &nbsp;
            </div>
        </form>
    </body>
    </html>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;
    using System.Collections.Generic;
    public partial class _Default : System.Web.UI.Page
    {
        SqlConnection sqlcon;
        SqlCommand sqlcom;
        string strCon = "Data Source=PC-200910232113;Initial Catalog=MSPetShop4;Integrated Security=sspi";    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 Product where ProductId='" + 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)
        {
            string sqlstr = "update Product set CategoryId=@CategoryId,Name=@Name,Descn=@Descn,Image=@Image  where ProductId =@ProductId";        SqlParameter[] parm = new SqlParameter[]
               {
                        new SqlParameter("@ProductId",SqlDbType.VarChar,10),
                        new SqlParameter("@CategoryId",SqlDbType.VarChar,10),
                        new SqlParameter("@Name",SqlDbType.VarChar,80),
                        new SqlParameter("@Descn",SqlDbType.VarChar,255),
                        new SqlParameter("@Image",SqlDbType.VarChar,80),
                        
                };
            List<TextBox> lttb = new List<TextBox>();        for (int i = 2; i <= 5; i++)
            {
                TextBox tb = (TextBox)GridView1.Rows[e.RowIndex].FindControl("Text" + i.ToString());
                lttb.Add(tb);
            }
            Label label = (Label)GridView1.Rows[e.RowIndex].FindControl("Text1");
            parm[0].Value = label.Text;
            for (int i = 0; i < parm.Length - 1; i++)
            {
                if (lttb[i] != null)
                {
                    parm[i + 1].Value = lttb[i].Text;
                }
            }
            sqlcon = new SqlConnection(strCon);
            sqlcon.Open();
            sqlcom = new SqlCommand(sqlstr, sqlcon);        foreach (SqlParameter par in parm)
            {
                sqlcom.Parameters.Add(par);
            }
            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 Product";
            sqlcon = new SqlConnection(strCon);
            SqlDataAdapter myda = new SqlDataAdapter(sqlstr, sqlcon);
            DataSet myds = new DataSet();
            sqlcon.Open();
            myda.Fill(myds, "Product");
            GridView1.DataSource = myds;
            GridView1.DataKeyNames = new string[] { "ProductId" };
            GridView1.DataBind();
            sqlcon.Close();
        }
        //添加行
        protected void BindTestData()
        {
            DataTable dt1 = new DataTable("Table1");
            dt1.Columns.Add("ID");
            dt1.Columns.Add("ProductId");
            dt1.Columns.Add("CategoryId");
            dt1.Columns.Add("Name");
            dt1.Columns.Add("Descn");
            dt1.Columns.Add("Image");
            this.GridView1.DataSource = dt1;
            this.GridView1.DataBind();
        }
        protected DataTable GetDataFromGrid()
        {
            DataTable dt1 = new DataTable("Table1");
            dt1.Columns.Add("ID");
            dt1.Columns.Add("ProductId");
            dt1.Columns.Add("CategoryId");
            dt1.Columns.Add("Name");
            dt1.Columns.Add("Descn");
            dt1.Columns.Add("Image");
            for (int i = 0; i < GridView1.Rows.Count; i++)
            {
                GridViewRow gRow = GridView1.Rows[i];
                DataRow newRow = dt1.NewRow();
                newRow[0] = GridView1.DataKeys[i].Value;
                newRow[1] = ((TextBox)gRow.FindControl("Label1")).Text;
                newRow[2] = ((TextBox)gRow.FindControl("Label2")).Text;
                newRow[3] = ((TextBox)gRow.FindControl("Label3")).Text;
                newRow[4] = ((TextBox)gRow.FindControl("Label4")).Text;
                newRow[5] = ((TextBox)gRow.FindControl("Label5")).Text;
                dt1.Rows.Add(newRow);
            }
            dt1.AcceptChanges();
            return dt1;
        }    protected void Button1_Click1(object sender, EventArgs e)
        {
            DataTable dt = this.GetDataFromGrid();
            DataRow newRow = dt.NewRow();
            dt.Rows.Add(newRow);
            this.GridView1.DataSource = dt;
            this.GridView1.DataBind();
        }
        protected void Button2_Click1(object sender, EventArgs e)
        {
            DataTable dt = this.GetDataFromGrid();
            foreach (DataRow row in dt.Rows)
            {
                if (row["ID"] != null)
                {
                    //更新该行记录到数据库
                }
                else
                {
                    //插入该行记录到数据库
                }
            }
        }    protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
        {    }
    }