gridview 数据保存问题?
gridview 里的数据从数据库中读出例如
id name
1 小东
2 小明
下边有按钮 添加 删除 修改 保存
如何做到 点击按钮添加数据在gridview中显示
id name
1 小东
2 小明
3 大鹏
但是此时不添加数据库
有个保存按钮 然后再插入数据库中 (类似还有点击一行可进行删除和修改,点击保存才真正保存到数据库)
希望大家可以帮住我,最好有实现代码或者详细些! --------------------编程问答-------------------- 关注 --------------------编程问答-------------------- 如果非要用gridview ,可先动态插入数据源(datatable或集合)。
用泛型集合相对更快一些。
还有一种方法,可以用JS来实现,动态插入表格和内容。
如果非要用gridview,可生成后看源码,看下布局结构以及其id,name 等属性 ,然后用JS进行动态插入。
--------------------编程问答-------------------- 你可以应用 SqlCommandBuilder
先把记录集保存到 DataTable 中,然后操作 DataTable
当保存的时候 使用 SqlCommandBuilder 去保存 操作的 DataTable --------------------编程问答-------------------- 把你增加的先添加到一个集合里吧 点保存在真正的保存到数据库 --------------------编程问答-------------------- 只为顶一下。 --------------------编程问答--------------------
--------------------编程问答--------------------
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
<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
}
}
星级用户就是不同 --------------------编程问答-------------------- 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.保存按钮..这一步应该就没什么写的了... --------------------编程问答-------------------- --------------------编程问答--------------------
楼上的老大啊,你的几个字我都看过n编了。。。
--------------------编程问答-------------------- 将数据放在一个临时的DataTable中,页面的所有操作体现到DataTable中,点击保存时根据当前的DataTable去更新数据库即可。 --------------------编程问答-------------------- DataTable的每一行是有状态可以明显加以区别。 --------------------编程问答-------------------- 简单~~你先把数据写入到xml文件中,gridview绑定xml,添加就在xml中添加。保存再添加到数据库 --------------------编程问答-------------------- 可以临时存到DataSet里面,点保存时在插入数据到DB!
补充:.NET技术 , ASP.NET