怎样实现GridView动态添加行的功能 怎样实现GridView动态添加行的功能???功能描述:在GridView每一行的后面都有一个按钮“添加一行”,当点击这个按钮时,就会出“该行”的后面添加一个空行,用来添加数据。其实这个GridView+TextBox是用来模拟Excel录入的,这个“动态添加行”,也就是模拟Excel插入行的功能。请问这样的功能怎样实现??? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 protected void Button1_Click(object sender, EventArgs e) { DataTable dt = ReadGridView(); //this.GridView1.DataSource = dt; //this.GridView1.DataBind(); DataRow row = dt.NewRow(); row.ItemArray = new object[] { "oec2003","oec2003","oec2003" }; dt.Rows.InsertAt(row, 0); dt.AcceptChanges(); this.GridView1.DataSource = dt; this.GridView1.DataBind(); } http://topic.csdn.net/u/20080903/14/80fd813a-3242-470e-be1d-292b8598448e.html <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="VSG.Web._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 runat="server"> <title></title>. <style type="text/css"> body { font-size: 12px; text-align: center; } .TextBox { border-right: #ffffff 0px solid; border-top: #ffffff 0px solid; font-size: 9pt; border-left: #ffffff 0px solid; border-bottom: #c0c0c0 1px solid; background-color: #ffffff; } table.gridview_m { border-collapse: collapse; border: solid 1px #93c2f1; width: 98%; font-size: 10pt; } table.gridview_m td, th { border-collapse: collapse; border: solid 1px #ffffff; font-size: 10pt; } table.gridview_m1 { border-collapse: collapse; border: solid 1px #93c2f1; width: 98%; font-size: 10pt; } table.gridview_m1 td1, th1 { border-collapse: collapse; border: solid 1px #93c2f1; font-size: 10pt; } </style></head><body> <form id="form1" runat="server"> <div style="text-align: center"> <asp:GridView ID="Gv1" runat="server" AutoGenerateColumns="False" Height="1px" OnRowDeleting="Gv1_RowDeleting" CssClass="gridview_m1" onrowcommand="Gv1_RowCommand"> <RowStyle HorizontalAlign="Center" VerticalAlign="Middle" /> <Columns> <asp:TemplateField HeaderText="编号"> <ItemTemplate> <%# Container.DataItemIndex+1 %> <asp:Label ID="Lb_Index" runat="server" Text='<%# Container.DataItemIndex+1 %>' Visible="false"></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="现任职务"> <ItemTemplate> <asp:TextBox ID="Txt_Cposition" runat="server" Text='<%#Eval("Cposition")%>' CssClass="TextBox"></asp:TextBox> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="姓名"> <ItemTemplate> <asp:TextBox ID="Txt_UserName" runat="server" Text='<%#Eval("UserName")%>' CssClass="TextBox"></asp:TextBox> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="一月份"> <ItemTemplate> <asp:TextBox ID="Txt_Jan" runat="server" Text='<%#Eval("JanCount")%>' CssClass="TextBox"></asp:TextBox> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="二月份"> <ItemTemplate> <asp:TextBox ID="Txt_Feb" runat="server" Text='<%#Eval("FebCount")%>' CssClass="TextBox"></asp:TextBox> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="删除"> <ItemTemplate> <asp:LinkButton ID="Lkb_delete" runat="server" CommandName="delete" Text="删除" CommandArgument='<%# Container.DataItemIndex+1 %>'></asp:LinkButton> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="操作"> <ItemTemplate> <asp:LinkButton ID="btnRowConfirm" runat="server" Text="结果确认" CommandName="ConfirmResult" /> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> <p> </p> <p> 职务:<asp:TextBox ID="txt_Cp" runat="server" CssClass="TextBox"></asp:TextBox></p> <p> 姓名:<asp:TextBox ID="txt_Un" runat="server" CssClass="TextBox"></asp:TextBox></p> <p> 一月:<asp:TextBox ID="txt_Jn" runat="server" CssClass="TextBox"></asp:TextBox></p> <p> 二月:<asp:TextBox ID="txt_Fb" runat="server" CssClass="TextBox"></asp:TextBox></p> <p> <asp:Button ID="Btn_Add" runat="server" OnClick="Btn_Add_Click" Text="添加" /> </p> </div> </form></body></html>using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using System.Data;using System.Collections;namespace VSG.Web{ public partial class _Default : System.Web.UI.Page { Hashtable ht = new Hashtable();//记录ID和索引 DataTable Data = new DataTable(); protected void Page_Load(object sender, EventArgs e) { if (ViewState["Data"] != null) { GridViewBind(this.Gv1, ViewState["Data"] as DataTable); } else { Data.Columns.Add("Cposition"); Data.Columns.Add("UserName"); Data.Columns.Add("JanCount"); Data.Columns.Add("FebCount"); Data.Rows.Add(new object[] { "卑鄙副总工程师", "张1", "98", "94" }); Data.Rows.Add(new object[] { "矿建副总工程师", "张2", "99", "94" }); Data.Rows.Add(new object[] { "机电副总工程师", "张3", "95", "93" }); Data.Rows.Add(new object[] { "基建副总工程师", "张4", "93", "91" }); GridViewBind(this.Gv1, Data); ViewState["Data"] = Data; } Data = ViewState["Data"] as DataTable; if (Data.Rows.Count > 0) { for (int i = 0; i < Data.Rows.Count; i++) { //这里应该存一个唯一键 来记录索引 //添加这个索引是为了后面删除和更新很方便的找到 ht.Add(i + 1, i); } } } protected void Gv1_RowDeleting(object sender, GridViewDeleteEventArgs e) { //如果不为空就取出来 if (ViewState["Data"] != null) { Data = ViewState["Data"] as DataTable; } //取当前行ID int id = Convert.ToInt32((this.Gv1.Rows[e.RowIndex].FindControl("Lkb_delete") as LinkButton).CommandArgument); //匹配索引 int index = Convert.ToInt32(ht[id]); //移除行 this.Data.Rows.RemoveAt(index); //绑定数据 GridViewBind(this.Gv1, Data); //保存数据 ViewState["Data"] = Data; } protected void Btn_Add_Click(object sender, EventArgs e) { //先取出ViewState["Data"]是否为空. if (ViewState["Data"] != null) { Data = ViewState["Data"] as DataTable; } else { Data = CreateTable(0); } Data.Rows.Add(new object[] { this.txt_Cp.Text, this.txt_Un.Text, this.txt_Jn.Text, this.txt_Fb.Text });//添加行 GridViewBind(this.Gv1, Data);//绑定 //同时加入ViewState["Data"] ViewState["Data"] = Data; } /// <summary> /// 空行数 /// </summary> /// <param name="Count"></param> /// <returns></returns> private DataTable CreateTable(int Count) { DataTable Data = new DataTable(); Data.Columns.Add("Cposition"); Data.Columns.Add("UserName"); Data.Columns.Add("JanCount"); Data.Columns.Add("FebCount"); if (Count > 0) { for (int i = 0; i < Count; i++) { Data.Rows.Add(new object[] { "", "", "", "" }); } } return Data; } private void GridViewBind(GridView GV, DataTable dt) { if (dt.Rows.Count != 0) { GV.DataSource = dt; } else { GV.DataSource = null; GV.EmptyDataText = "没有可以显示的数据"; } GV.DataBind(); } protected void Gv1_RowCommand(object sender, GridViewCommandEventArgs e) { if (e.CommandSource.GetType() == typeof(LinkButton) && e.CommandName == "ConfirmResult") { this.ClientScript.RegisterStartupScript(GetType(), "", "<script>alert('ddddd');</script>"); } } }} 看起来,你想做一个编辑操作中从来不重新绑定数据源的GridView应用。那么就要直接对GridView.Rows操作,你也无须对什么数据保存到ViewState,因为GridView自己会维持它的状态。 从数据库中查询DataTable,然后在数据库中插入一行,把序号指定到“该行”的后面然后重新绑定。 关于使用Parameter的一小问题 关于跨框架的顯示導航菜單的問題? asp.net mvc3中IE的AJAX的问题 c# asp.net凭什么拿高薪 C# 中params 关键字的疑问,帮忙看下了啊 请教asp.net大侠!! 都不知道我怎么找工作的,这么基础都不会! 在空表不能插入行?但在非空表却可以,为何? 如何在datagrid中实现排序。 treeview 安装后,并在自定义工具箱里添了treeview,但是拖不下来 数据库连接 ASP.NET问题,求高人指教!
{
DataTable dt = ReadGridView();
//this.GridView1.DataSource = dt;
//this.GridView1.DataBind();
DataRow row = dt.NewRow();
row.ItemArray = new object[] { "oec2003","oec2003","oec2003" };
dt.Rows.InsertAt(row, 0);
dt.AcceptChanges();
this.GridView1.DataSource = dt;
this.GridView1.DataBind();
}
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>.
<style type="text/css">
body
{
font-size: 12px;
text-align: center;
}
.TextBox
{
border-right: #ffffff 0px solid;
border-top: #ffffff 0px solid;
font-size: 9pt;
border-left: #ffffff 0px solid;
border-bottom: #c0c0c0 1px solid;
background-color: #ffffff;
}
table.gridview_m
{
border-collapse: collapse;
border: solid 1px #93c2f1;
width: 98%;
font-size: 10pt;
}
table.gridview_m td, th
{
border-collapse: collapse;
border: solid 1px #ffffff;
font-size: 10pt;
}
table.gridview_m1
{
border-collapse: collapse;
border: solid 1px #93c2f1;
width: 98%;
font-size: 10pt;
}
table.gridview_m1 td1, th1
{
border-collapse: collapse;
border: solid 1px #93c2f1;
font-size: 10pt;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<div style="text-align: center">
<asp:GridView ID="Gv1" runat="server" AutoGenerateColumns="False" Height="1px" OnRowDeleting="Gv1_RowDeleting"
CssClass="gridview_m1" onrowcommand="Gv1_RowCommand">
<RowStyle HorizontalAlign="Center" VerticalAlign="Middle" />
<Columns>
<asp:TemplateField HeaderText="编号">
<ItemTemplate>
<%# Container.DataItemIndex+1 %>
<asp:Label ID="Lb_Index" runat="server" Text='<%# Container.DataItemIndex+1 %>' Visible="false"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="现任职务">
<ItemTemplate>
<asp:TextBox ID="Txt_Cposition" runat="server" Text='<%#Eval("Cposition")%>' CssClass="TextBox"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="姓名">
<ItemTemplate>
<asp:TextBox ID="Txt_UserName" runat="server" Text='<%#Eval("UserName")%>' CssClass="TextBox"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="一月份">
<ItemTemplate>
<asp:TextBox ID="Txt_Jan" runat="server" Text='<%#Eval("JanCount")%>' CssClass="TextBox"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="二月份">
<ItemTemplate>
<asp:TextBox ID="Txt_Feb" runat="server" Text='<%#Eval("FebCount")%>' CssClass="TextBox"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="删除">
<ItemTemplate>
<asp:LinkButton ID="Lkb_delete" runat="server" CommandName="delete" Text="删除" CommandArgument='<%# Container.DataItemIndex+1 %>'></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="操作">
<ItemTemplate>
<asp:LinkButton ID="btnRowConfirm" runat="server" Text="结果确认" CommandName="ConfirmResult" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<p>
</p>
<p>
职务:<asp:TextBox ID="txt_Cp" runat="server" CssClass="TextBox"></asp:TextBox></p>
<p>
姓名:<asp:TextBox ID="txt_Un" runat="server" CssClass="TextBox"></asp:TextBox></p>
<p>
一月:<asp:TextBox ID="txt_Jn" runat="server" CssClass="TextBox"></asp:TextBox></p>
<p>
二月:<asp:TextBox ID="txt_Fb" runat="server" CssClass="TextBox"></asp:TextBox></p>
<p>
<asp:Button ID="Btn_Add" runat="server" OnClick="Btn_Add_Click" Text="添加" />
</p>
</div>
</form>
</body>
</html>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;using System.Data;
using System.Collections;namespace VSG.Web
{
public partial class _Default : System.Web.UI.Page
{
Hashtable ht = new Hashtable();//记录ID和索引
DataTable Data = new DataTable();
protected void Page_Load(object sender, EventArgs e)
{ if (ViewState["Data"] != null)
{
GridViewBind(this.Gv1, ViewState["Data"] as DataTable);
}
else
{ Data.Columns.Add("Cposition");
Data.Columns.Add("UserName");
Data.Columns.Add("JanCount");
Data.Columns.Add("FebCount");
Data.Rows.Add(new object[] { "卑鄙副总工程师", "张1", "98", "94" });
Data.Rows.Add(new object[] { "矿建副总工程师", "张2", "99", "94" });
Data.Rows.Add(new object[] { "机电副总工程师", "张3", "95", "93" });
Data.Rows.Add(new object[] { "基建副总工程师", "张4", "93", "91" });
GridViewBind(this.Gv1, Data);
ViewState["Data"] = Data;
} Data = ViewState["Data"] as DataTable;
if (Data.Rows.Count > 0)
{
for (int i = 0; i < Data.Rows.Count; i++)
{
//这里应该存一个唯一键 来记录索引
//添加这个索引是为了后面删除和更新很方便的找到
ht.Add(i + 1, i);
}
}
}
protected void Gv1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
//如果不为空就取出来
if (ViewState["Data"] != null)
{
Data = ViewState["Data"] as DataTable;
}
//取当前行ID
int id = Convert.ToInt32((this.Gv1.Rows[e.RowIndex].FindControl("Lkb_delete") as LinkButton).CommandArgument);
//匹配索引
int index = Convert.ToInt32(ht[id]);
//移除行
this.Data.Rows.RemoveAt(index);
//绑定数据
GridViewBind(this.Gv1, Data);
//保存数据
ViewState["Data"] = Data; }
protected void Btn_Add_Click(object sender, EventArgs e)
{
//先取出ViewState["Data"]是否为空.
if (ViewState["Data"] != null)
{
Data = ViewState["Data"] as DataTable;
}
else
{
Data = CreateTable(0);
}
Data.Rows.Add(new object[] { this.txt_Cp.Text, this.txt_Un.Text, this.txt_Jn.Text, this.txt_Fb.Text });//添加行
GridViewBind(this.Gv1, Data);//绑定
//同时加入ViewState["Data"]
ViewState["Data"] = Data;
} /// <summary>
/// 空行数
/// </summary>
/// <param name="Count"></param>
/// <returns></returns>
private DataTable CreateTable(int Count)
{
DataTable Data = new DataTable();
Data.Columns.Add("Cposition");
Data.Columns.Add("UserName");
Data.Columns.Add("JanCount");
Data.Columns.Add("FebCount");
if (Count > 0)
{
for (int i = 0; i < Count; i++)
{
Data.Rows.Add(new object[] { "", "", "", "" });
}
}
return Data;
} private void GridViewBind(GridView GV, DataTable dt)
{
if (dt.Rows.Count != 0)
{
GV.DataSource = dt;
}
else
{
GV.DataSource = null;
GV.EmptyDataText = "没有可以显示的数据";
}
GV.DataBind();
} protected void Gv1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandSource.GetType() == typeof(LinkButton) && e.CommandName == "ConfirmResult")
{
this.ClientScript.RegisterStartupScript(GetType(), "", "<script>alert('ddddd');</script>");
}
}
}
}