gridview 数据保存问题?

china_ming 2009-08-04 03:29:24
gridview 里的数据从数据库中读出
例如
id name
1 小东
2 小明

下边有按钮 添加 删除 修改 保存

如何做到 点击按钮添加数据在gridview中显示
id name
1 小东
2 小明
3 大鹏

但是此时不添加数据库

有个保存按钮 然后再插入数据库中 (类似还有点击一行可进行删除和修改,点击保存才真正保存到数据库)

希望大家可以帮住我,最好有实现代码或者详细些!
...全文
244 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
guyehanxinlei 2009-08-18
  • 打赏
  • 举报
回复
DataTable的每一行是有状态可以明显加以区别。
guyehanxinlei 2009-08-18
  • 打赏
  • 举报
回复
将数据放在一个临时的DataTable中,页面的所有操作体现到DataTable中,点击保存时根据当前的DataTable去更新数据库即可。
phf0313 2009-08-18
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 fgmis 的回复:]
参考GridView控件总攻略
[/Quote]
楼上的老大啊,你的几个字我都看过n编了。。。
y82907966 2009-08-18
  • 打赏
  • 举报
回复
1.首先用一个GetList()方法获取到所有的数据集绑定给gridview
如:
在 page_load事件中绑定数据
gridview1.DataSource = BLL.GetList();
gridview1.DataBind();

2.点击添加按钮的时候获取text数据,通过session保存下来,在给datase,在重新绑定。
string text1 = txt1.Text.Trim();

DataTable mdt = new DataTable();
["mdt"] = null;
mdt.Columns.Add("text1", typeof(Int32));
Session["mdt"] = mdt;

DataTable dt = (DataTable)Session["mdt"];
DataSet ds = new DataSet();
ds.Merge(dt);

gridview1.DataSource = ds;
gridview1.DataBind();

3.保存按钮..这一步应该就没什么写的了...
meditatorx 2009-08-18
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 sandy945 的回复:]
HTML code<htmlxmlns="http://www.w3.org/1999/xhtml"><headrunat="server"><title>无标题页</title></head><body><formid="form1" runat="server">
姓名:<asp:TextBoxID="txtName" runat="server"></asp:TextBox>部门:<asp:TextBoxID="txtDepartment" runat="server"></asp:TextBox><asp:ButtonID="btnAdd" runat="server" Text="新增" OnClick="btnAdd_Click"/>    <asp:ButtonID="btnSave" Text="保存" runat="server" OnClick="btnSave_Click"/><asp:GridViewID="gv" runat="server" AutoGenerateColumns="false" DataKeyNames="ID" OnRowDeleting="gv_RowDeleting" OnRowEditing="gv_RowEditing" OnRowUpdating="gv_RowUpdating" OnRowCancelingEdit="gv_RowCancelingEdit"><Columns><asp:TemplateFieldHeaderText="姓名"><ItemTemplate><%#Eval("Name")%></ItemTemplate><EditItemTemplate><asp:TextBoxID="txtName" runat="server" Text='<%#Eval("Name")%>'></asp:TextBox></EditItemTemplate></asp:TemplateField><asp:TemplateFieldHeaderText="部门"><ItemTemplate><%#Eval("Department")%></ItemTemplate><EditItemTemplate><asp:TextBoxID="txtDepartment" runat="server" Text='<%#Eval("Department")%>'></asp:TextBox></EditItemTemplate></asp:TemplateField><asp:CommandFieldShowDeleteButton="True"/><asp:CommandFieldShowEditButton="True"/></Columns></asp:GridView></form></body></html>
C# codeprotectedvoid Page_Load(object sender, EventArgs e)
{if (!IsPostBack)
{
DataTable dt= getDataTable();
ViewState["dt"]= dt;
gv.DataSource= dt;
gv.DataBind();
}
}private DataTable getDataTable()
{using (SqlConnection con=new SqlConnection("server=.;uid=xxx;pwd=xxx;database=Test"))
{
SqlDataAdapter sda=new SqlDataAdapter("select * from GridViewDemoTable", con);
DataSet ds=new DataSet();
sda.Fill(ds,"GridViewDemoTable");if (ds.Tables.Contains("GridViewDemoTable"))
{return ds.Tables["GridViewDemoTable"];
}returnnull;

}//end using block }protectedvoid gv_RowDeleting(object sender, GridViewDeleteEventArgs e)
{object val= gv.DataKeys[e.RowIndex].Value;
DataTable dt= ViewState["dt"]as DataTable;if (dt!=null)
{for (int i= dt.Rows.Count-1; i>-1; i--)
{if (dt.Rows[i][0].Equals(val))
{
dt.Rows[i].Delete();//dt.Rows.RemoveAt(i); }
}
ViewState["dt"]= dt;
gv.DataSource= dt;
gv.DataBind();//Response.Write("<script language='JavaScript'>window.location=location;</script>");//防止刷新重复提交
}
}protectedvoid gv_RowEditing(object sender, GridViewEditEventArgs e)
{
gv.EditIndex= e.NewEditIndex;
DataTable dt= ViewState["dt"]as DataTable;if (dt!=null)
{
gv.DataSource= dt;
gv.DataBind();
}
}protectedvoid gv_RowUpdating(object sender, GridViewUpdateEventArgs e)
{int iRowIndex= e.RowIndex;

DataTable dt= ViewState["dt"]as DataTable;if (dt!=null)
{
dt.Rows[iRowIndex]["Name"]= ((senderas GridView).Rows[iRowIndex].FindControl("txtName")as TextBox).Text;
dt.Rows[iRowIndex]["Department"]= ((senderas GridView).Rows[iRowIndex].FindControl("txtDepartment")as TextBox).Text;

ViewState["dt"]= dt;
(senderas GridView).EditIndex=-1;
gv.DataSource= dt;
gv.DataBind();
}

}protectedvoid gv_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{

gv.EditIndex=-1;
DataTable dt= ViewState["dt"]as DataTable;if (dt!=null)
{
gv.DataSource= dt;
gv.DataBind();
}
}protectedvoid btnAdd_Click(object sender, EventArgs e)
{
DataTable dt= ViewState["dt"]as DataTable;if (dt!=null)
{using (SqlConnection con=new SqlConnection("server=.;uid=xxx;pwd=xxx;database=Test"))
{
SqlDataAdapter sda=new SqlDataAdapter("select MAX(ID)+1 from GridViewDemoTable", con);
DataSet ds=new DataSet();
sda.Fill(ds,"MaxID");if (ds.Tables.Contains("MaxID")&& ds.Tables["MaxID"].Rows.Count>0)
{
DataRow dr= dt.NewRow();
dr[0]= ds.Tables["MaxID"].Rows[0][0];
dr[1]= txtName.Text;
dr[2]= txtDepartment.Text;
dt.Rows.Add(dr);
ViewState["dt"]= dt;
gv.DataSource= dt;
gv.DataBind();
}
}//end using block }
}protectedvoid btnSave_Click(object sender, EventArgs e)
{
DataTable dt= ViewState["dt"]as DataTable;if (dt!=null)
{using (SqlConnection con=new SqlConnection("server=.;uid=xxx;pwd=xxx;database=Test"))
{
SqlDataAdapter sda=new SqlDataAdapter("select * from GridViewDemoTable", con);
SqlCommandBuilder scb=new SqlCommandBuilder(sda);
DataSet ds=new DataSet();
sda.Fill(ds,"GridViewDemoTable");
sda.Update(dt);
ClientScript.RegisterStartupScript(GetType(),"success","alert('保存成功!');",true);
}//end using block }
}
[/Quote]
星级用户就是不同
阿非 2009-08-18
  • 打赏
  • 举报
回复

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
姓名:<asp:TextBox ID="txtName" runat="server"></asp:TextBox>部门:<asp:TextBox ID="txtDepartment" runat="server"></asp:TextBox>
<asp:Button ID="btnAdd" runat="server" Text="新增" OnClick="btnAdd_Click" />    <asp:Button ID="btnSave" Text="保存" runat="server" OnClick="btnSave_Click" />
<asp:GridView ID="gv" runat="server" AutoGenerateColumns="false" DataKeyNames="ID" OnRowDeleting="gv_RowDeleting" OnRowEditing="gv_RowEditing" OnRowUpdating="gv_RowUpdating" OnRowCancelingEdit="gv_RowCancelingEdit">
<Columns>
<asp:TemplateField HeaderText="姓名">
<ItemTemplate>
<%#Eval("Name") %>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtName" runat="server" Text='<%#Eval("Name") %>'></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="部门">
<ItemTemplate>
<%#Eval("Department") %>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtDepartment" runat="server" Text='<%#Eval("Department") %>'></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:CommandField ShowDeleteButton="True" />
<asp:CommandField ShowEditButton="True" />
</Columns>
</asp:GridView>

</form>
</body>
</html>



protected void Page_Load(object sender, EventArgs e)
{

if (!IsPostBack)
{
DataTable dt = getDataTable();
ViewState["dt"] = dt;
gv.DataSource = dt;
gv.DataBind();
}
}

private DataTable getDataTable()
{
using (SqlConnection con = new SqlConnection("server=.;uid=xxx;pwd=xxx;database=Test"))
{
SqlDataAdapter sda = new SqlDataAdapter("select * from GridViewDemoTable ", con);
DataSet ds = new DataSet();
sda.Fill(ds, "GridViewDemoTable");
if (ds.Tables.Contains("GridViewDemoTable"))
{
return ds.Tables["GridViewDemoTable"];
}
return null;

}//end using block
}

protected void gv_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
object val = gv.DataKeys[e.RowIndex].Value;
DataTable dt = ViewState["dt"] as DataTable;
if (dt != null)
{
for (int i = dt.Rows.Count - 1; i > -1; i--)
{
if (dt.Rows[i][0].Equals(val))
{
dt.Rows[i].Delete();
//dt.Rows.RemoveAt(i);
}
}
ViewState["dt"] = dt;
gv.DataSource = dt;
gv.DataBind();
//Response.Write("<script language='JavaScript'>window.location=location;</script>"); //防止刷新重复提交

}
}
protected void gv_RowEditing(object sender, GridViewEditEventArgs e)
{
gv.EditIndex = e.NewEditIndex;
DataTable dt = ViewState["dt"] as DataTable;
if (dt != null)
{
gv.DataSource = dt;
gv.DataBind();
}
}

protected void gv_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
int iRowIndex = e.RowIndex;

DataTable dt = ViewState["dt"] as DataTable;
if (dt != null)
{
dt.Rows[iRowIndex]["Name"] = ((sender as GridView).Rows[iRowIndex].FindControl("txtName") as TextBox).Text;
dt.Rows[iRowIndex]["Department"] = ((sender as GridView).Rows[iRowIndex].FindControl("txtDepartment") as TextBox).Text;

ViewState["dt"] = dt;
(sender as GridView).EditIndex = -1;
gv.DataSource = dt;
gv.DataBind();
}

}
protected void gv_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{

gv.EditIndex = -1;
DataTable dt = ViewState["dt"] as DataTable;
if (dt != null)
{
gv.DataSource = dt;
gv.DataBind();
}
}
protected void btnAdd_Click(object sender, EventArgs e)
{
DataTable dt = ViewState["dt"] as DataTable;
if (dt != null)
{
using (SqlConnection con = new SqlConnection("server=.;uid=xxx;pwd=xxx;database=Test"))
{
SqlDataAdapter sda = new SqlDataAdapter("select MAX(ID)+1 from GridViewDemoTable ", con);
DataSet ds = new DataSet();
sda.Fill(ds, "MaxID");
if (ds.Tables.Contains("MaxID") && ds.Tables["MaxID"].Rows.Count > 0)
{
DataRow dr = dt.NewRow();
dr[0] = ds.Tables["MaxID"].Rows[0][0];
dr[1] = txtName.Text;
dr[2] = txtDepartment.Text;
dt.Rows.Add(dr);
ViewState["dt"] = dt;
gv.DataSource = dt;
gv.DataBind();
}
}//end using block
}
}
protected void btnSave_Click(object sender, EventArgs e)
{
DataTable dt = ViewState["dt"] as DataTable;
if (dt != null)
{
using (SqlConnection con = new SqlConnection("server=.;uid=xxx;pwd=xxx;database=Test"))
{
SqlDataAdapter sda = new SqlDataAdapter("select * from GridViewDemoTable ", con);
SqlCommandBuilder scb = new SqlCommandBuilder(sda);
DataSet ds = new DataSet();
sda.Fill(ds, "GridViewDemoTable");
sda.Update(dt);
ClientScript.RegisterStartupScript(GetType(), "success", "alert('保存成功!');", true);
}//end using block
}
}
阿非 2009-08-18
  • 打赏
  • 举报
回复

create table GridViewDemoTable
(
[ID] int identity(1,1) primary key,
[Name] varchar(20) unique,
[Department] varchar(20)
)
insert into GridViewDemoTable ([Name],[Department]) select '张三','市场部'
union all select '李四','研发部'
union all select '王二','策划部'
union all select '薛七','销售部'
union all select '丁一','财务部'

select * from GridViewDemoTable
puzhichen 2009-08-18
  • 打赏
  • 举报
回复
可以临时存到DataSet里面,点保存时在插入数据到DB!
wulechang 2009-08-18
  • 打赏
  • 举报
回复
简单~~你先把数据写入到xml文件中,gridview绑定xml,添加就在xml中添加。保存再添加到数据库
dong413586129 2009-08-04
  • 打赏
  • 举报
回复
只为顶一下。
zhulong1111 2009-08-04
  • 打赏
  • 举报
回复
把你增加的先添加到一个集合里吧 点保存在真正的保存到数据库
阿非 2009-08-04
  • 打赏
  • 举报
回复
你可以应用 SqlCommandBuilder

先把记录集保存到 DataTable 中,然后操作 DataTable
当保存的时候 使用 SqlCommandBuilder 去保存 操作的 DataTable
cam6778102 2009-08-04
  • 打赏
  • 举报
回复
如果非要用gridview ,可先动态插入数据源(datatable或集合)。

用泛型集合相对更快一些。

还有一种方法,可以用JS来实现,动态插入表格和内容。

如果非要用gridview,可生成后看源码,看下布局结构以及其id,name 等属性 ,然后用JS进行动态插入。
cdd1012 2009-08-04
  • 打赏
  • 举报
回复
关注

62,075

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧