using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Data;namespace GridView
{
    public partial class lianxi : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {            if (!IsPostBack)
            {
               DataTable dt=createDataTable();
               GridView1.DataSource = dt;
               GridView1.DataBind();
            }
        }
        DataTable createDataTable()
        {
            DataTable dt = new DataTable();
            dt.Columns.Add(new DataColumn("书名", typeof(string)));
            dt.Columns.Add(new DataColumn("书号", typeof(string)));
            dt.Columns.Add(new DataColumn("价格", typeof(decimal)));
            dt.Columns.Add(new DataColumn("出版社", typeof(string)));            DataColumn[] dcs = new DataColumn[2];
            dcs[0] = new DataColumn("作者", typeof(string));
            dcs[1] = new DataColumn("期刊", typeof(string));
            dt.Columns.AddRange(dcs);
            //用addrange方法追加元素到末尾
            DataRow dr = dt.NewRow();
            dr["书名"] = "c#编程系列";
            dr[1] = "1234-4-4";
            dr[2] = 99.9;
            dr["出版社"] = "长江出版社";
            dr[4] = "小三";
            dr[5] = "第444期";            dt.Rows.Add(new object[] { "Asp.net", "2342-5-6", 56.23, "人民出版社", "李启铭", "12月下半月" });
            dt.Rows.Add(dr);
            return dt;
        }        protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
        {
            GridView1.EditIndex = -1;
            DataTable dt = createDataTable();
            GridView1.DataSource = dt;
            GridView1.DataBind();
        }        protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
        {
            GridView1.EditIndex = e.NewEditIndex;
            DataTable dt = createDataTable();
            GridView1.DataSource = dt;
            GridView1.DataBind();
        }        protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            object sid = GridView1.DataKeys[e.RowIndex].Value;
            TextBox bname = GridView1.Rows[e.RowIndex].FindControl("bname") as TextBox;
            TextBox bcode = GridView1.Rows[e.RowIndex].FindControl("bcode") as TextBox;
            TextBox bprice = GridView1.Rows[e.RowIndex].FindControl("bprice") as TextBox;
            TextBox bauther = GridView1.Rows[e.RowIndex].FindControl("bauther") as TextBox;
            TextBox bfrom = GridView1.Rows[e.RowIndex].FindControl("bfrom") as TextBox;
            TextBox bnum = GridView1.Rows[e.RowIndex].FindControl("bnum") as TextBox;
            //SqlDataAdapter sda = new SqlDataAdapter();
            DataTable dt = createDataTable();
            //sda.Fill(dt);
            foreach (DataRow dr in dt.Rows)
            {
                if (dr["书号"].ToString() == sid.ToString())
                {
                    dr["书名"] = bname.Text;
                    dr["书号"] = bcode.Text;
                    dr["价格"] = bprice.Text;
                    dr["作者"] = bauther.Text;
                    dr["出版社"] = bfrom.Text;
                    dr["期刊"] = bnum.Text;
                   
                }
                Response.Write(dr["书名"] + " " + dr["书号"] + " " + dr["价格"] + " " + dr["作者"] + " " + dr["出版社"] + " " + dr["期刊"] + "<br />");
            }            GridView1.DataSource = dt;
            GridView1.DataBind();
            GridView1_RowCancelingEdit(sender, null);
        }
    }
}
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="lianxi.aspx.cs" Inherits="GridView.lianxi" %><!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 runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
            onrowcancelingedit="GridView1_RowCancelingEdit" 
            onrowediting="GridView1_RowEditing" onrowupdating="GridView1_RowUpdating" DataKeyNames="书号">
        <Columns>
        <asp:TemplateField>
        <HeaderTemplate>操作</HeaderTemplate>
        <ItemTemplate><asp:LinkButton runat="server" CommandName="Edit">编辑</asp:LinkButton></ItemTemplate>
        <EditItemTemplate><asp:LinkButton runat="server" CommandName="Update">保存</asp:LinkButton>
        <asp:LinkButton runat="server" CommandName="Cancel">返回</asp:LinkButton></EditItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="书名"><ItemTemplate><%#Eval("书名") %></ItemTemplate>
        <EditItemTemplate><asp:TextBox runat="server" ID="bname" Text='<%#Eval("书名") %>'></asp:TextBox></EditItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="书号"><ItemTemplate><%#Eval("书号")%></ItemTemplate>
        <EditItemTemplate><asp:TextBox runat="server" ID="bcode" Text='<%#Eval("书号") %>'></asp:TextBox></EditItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="价格"><ItemTemplate><%#Eval("价格")%></ItemTemplate>
        <EditItemTemplate><asp:TextBox runat="server" ID="bprice" Text='<%#Eval("价格") %>'></asp:TextBox></EditItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="出版社"><ItemTemplate><%#Eval("出版社")%></ItemTemplate>
        <EditItemTemplate><asp:TextBox runat="server" ID="bfrom" Text='<%#Eval("出版社") %>'></asp:TextBox></EditItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="作者"><ItemTemplate><%#Eval("作者")%></ItemTemplate>
        <EditItemTemplate><asp:TextBox runat="server" ID="bauther" Text='<%#Eval("作者") %>'></asp:TextBox></EditItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="期刊"><ItemTemplate><%#Eval("期刊")%></ItemTemplate>
        <EditItemTemplate><asp:TextBox runat="server" ID="bnum" Text='<%#Eval("期刊") %>'></asp:TextBox></EditItemTemplate>
        </asp:TemplateField>
        </Columns>
        </asp:GridView>
    
    </div>
    </form>
</body>
</html>我简单的说明下场景,页面生成后,点击“编辑”,gridview进入编辑模式,然后修改后 点击“保存”,调试进入后台后在GridView1_RowUpdating 方法中 查看dt的值 就是我修改后的值,而且我也用response 输出在页面了,可是当GridView1.DataSource = dt;
            GridView1.DataBind();后 页面绑定的依然是开始的那个dt。求解啊 这是为嘛?

解决方案 »

  1.   

    if (dr["书号"].ToString() == sid.ToString())
                    {
    dr.BeginEdit();           ----加
                        dr["书名"] = bname.Text;
                        dr["书号"] = bcode.Text;
                        dr["价格"] = bprice.Text;
                        dr["作者"] = bauther.Text;
                        dr["出版社"] = bfrom.Text;
                        dr["期刊"] = bnum.Text;
                       dr.EndEdit();  --加
                    }
    dt.AcceptChange();    ---加
    GridView1.DataSource = dt;