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。求解啊 这是为嘛?
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。求解啊 这是为嘛?
{
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;