Gridview自带对数据的添加,删除,修改等,实现几乎不需要任何代码。但是这种情况下,Gridview的编辑功能,只能编辑单行数据。
下面根据一个实例演示多行编辑。
1.新建一个数据库“jp”,包含表“stus”,表的结构如下:
idname age
99001 lily 23
99002lotus 20
99003hong 25
2.新建一个网站,名为“gridviewss”;
3.在网页中添加两个GridView,同时给GridView1配置数据源,方法,设置属性“DatasourseID”,选择“新建数据源”进行添加。
源代码为: <asp:SqlDataSource ID="SqlDataSource1"runat="server" ConnectionString="<%$ConnectionStrings:jpConnectionString %>"
SelectCommand="SELECT * FROM[stus]"></asp:SqlDataSource>
<br />
4.GridView2用来编辑数据,需要为其设置模板,最终源代码为:
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1"runat="server" ConnectionString="<%$ConnectionStrings:jpConnectionString %>"
SelectCommand="SELECT * FROM[stus]"></asp:SqlDataSource>
<br />
<asp:LinkButton ID="LinkButton1" runat="server"OnClick="LinkButton1_Click">编辑</asp:LinkButton>
<asp:LinkButton ID="LinkButton2" runat="server"OnClick="LinkButton2_Click">保存</asp:LinkButton></div>
<asp:GridView ID="GridView2" runat="server">
<Columns>
<asp:TemplateFieldHeaderText="id">
<ItemTemplate>
<asp:TextBox ID="TextBox1" Text ='<%#Bind("id") %>'runat="server"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateFieldHeaderText="姓名">
<ItemTemplate>
<asp:TextBox ID="TextBox2" runat="server"Text='<%# Bind("name")%>'></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateFieldHeaderText="年龄">
<ItemTemplate>
<asp:TextBox ID="TextBox3" runat="server"Text='<%# Bind("age")%>'></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
5.页面的最终设计效果
6.代码视图下,在页面加载时,缓存数据表信息,代码如下:
protected void Page_Load(object sender,EventArgs e)
{
if (!IsPostBack)
{
DataTable dt = new DataTable();//创建表,并构建结构
dt.Columns.Add("id");
dt.Columns.Add("name");
dt.Columns.Add("age");
foreach (GridViewRow gvr in GridView1.Rows)//添加表的内容;
{
dt.Rows.Add(gvr.Cells[0].Text, gvr.Cells[1].Text,gvr.Cells[2].Text);
}
dt.AcceptChanges();
Session["Data"] = dt;//缓存表
}
7.双击“编辑”按钮,切换到其click代码视,代码如下:
protected voidLinkButton1_Click(object sender, EventArgs e)
{
GridView1.Visible = false;
GridView2.Visible = true;
DataTable mydt = new DataTable();
mydt = (DataTable)Session["Data"];
GridView2.DataSource = mydt;
GridView2.DataBind();
}
8.双击“保存”按钮,代码如下:
protected void LinkButton2_Click(object sender, EventArgse)
{
GridView2.Visible = false;
GridView1.Visible = true;
DataTable dt=new DataTable();//重新构建表
dt.Columns.Add("id");
dt.Columns.Add("name");
dt.Columns.Add("age");
foreach (GridViewRow gvr in GridView2.Rows)//获取修改后的内容
{
dt.Rows.Add(((TextBox)gvr.Cells[0].FindControl("TextBox1")).Text,((TextBox)gvr.Cells[1].FindControl("TextBox2")).Text,((TextBox)gvr.Cells[2].FindControl("TextBox3")).Text);
// dt.Rows.Add(((TextBox)gvr.Cells[0].FindControl("TextBox1")).Text,((TextBox)gvr.Cells[1].FindControl("TextBox2")).Text,((TextBox)gvr.Cells[2].FindControl("TextBox3")).Text);
}
dt.AcceptChanges();
GridView1.DataSourceID = "";//去除旧绑定
GridView1.DataSource = dt;//重新绑定
GridView1.DataBind();
}
注意:基实编辑和显示是在两个gridview之间进行切换。