datagrid 中数据批量保存

sos_hawk 2004-10-26 08:26:54
1.在datagrid中修改几条数据某一个字段的值后,要求最后一起保存,该如何实现?
2.跨页修改的数据,要求最后一起保存,该如何保存?
请教各位大虾,解决了分大大的有!
...全文
196 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
nmlvjun 2004-10-27
  • 打赏
  • 举报
回复
参考
OleDbCommand myCmd = new OleDbCommand("",cnn);
string strSql="";
for (int i=0;i<DataGrid1.Items.Count;i++)
{
strSql = "Update " + ""+biaom+" " + " Set " + myDt.Columns[0].ColumnName + "=" + myDt.Columns[0].ColumnName ;
for (int j=1;j<myDt.Columns.Count;j++)
{
strSql += ", " + myDt.Columns[j].ColumnName + "='" + ((TextBox)DataGrid1.Items[i].FindControl(myDt.Columns[j].ColumnName)).Text.Replace("'","''") + "'";
}
strSql += " Where " + myDt.Columns[0].ColumnName + "=" + DataGrid1.DataKeys[i].ToString() + "";

myCmd.CommandText = strSql;
myCmd.ExecuteNonQuery();
}
yydy 2004-10-27
  • 打赏
  • 举报
回复
我也遇到过这样的问题,别人改写了DataGrid类,实现了批量数据
给我你的Mail吧。
penning 2004-10-27
  • 打赏
  • 举报
回复
wys512() 的说法好像不太切实际吧,最好的方法就是将修改过的 dataset用Session保存,每一次更新datagrid绑定修改过的 dataset而不是数据库,修改全部结束后一次update到数据库
notus 2004-10-27
  • 打赏
  • 举报
回复
批量插入没有关系,真正消耗能量的是数据库连接,批量修改的好处就在于只连接一次就可以了
JadyZhu 2004-10-27
  • 打赏
  • 举报
回复
批量的话,用DataSet是最好的选择,否则N个Insert或者Update那有点恐怖
wys512 2004-10-27
  • 打赏
  • 举报
回复
同意leisang(我自飘零),一般来讲都是循环插入数据库,建议你在datagrid中建立模板列,在里面加一个checkbox,有修改的打上勾,然后循环判断插入
notus 2004-10-27
  • 打赏
  • 举报
回复
一般的做法就是把数据存到一个datast中,然后把这个dataset存到一个session中,然后进行修改,最后一起用adapetr的update方法完成!
具体可以看这里
http://msdn.microsoft.com/msdnmag/issues/03/07/datapoints/default.aspx
另外跨页选择的问题,我写了一个datagrid来自动完成这个,想要的话就看这里
http://bbs.itzyk.net/dispbbs.asp?boardID=21&ID=813&page=1
bruce007 2004-10-27
  • 打赏
  • 举报
回复

to leisang(我自飘零)
当然需要需要好多insert语句. 比如System.Data.SqlClient 得实现用得示TDS。 但是它将这些作为一个事务来处理。 就不会出现数据错误了, 达到我们得要求了啊
lujun1234 2004-10-27
  • 打赏
  • 举报
回复
一、可以先将DataGrid里的数据更新到ViewState的DataSet中的某个DataTable中,然后让Table[0].AcceptChanges;最后一起将DataSet更新到数据库
二、一样的道理,只不过是将更改后的Table存在Session中。
雄蜂 2004-10-27
  • 打赏
  • 举报
回复
曾经在《.net架构设计》中看到关于批量保存数据,但是只有简单的一句,好像是用xmltable什么的。
噯卟釋手 2004-10-27
  • 打赏
  • 举报
回复
up
leisang 2004-10-27
  • 打赏
  • 举报
回复
数据库是不能批量插入的
无论看起来多么智能实际上都需要好多insert语句
xiaohutushen 2004-10-26
  • 打赏
  • 举报
回复
一、利用事务(Transaction)
‘定义执行批量插入数据的函数,参数为Insert SQL语句的数组
Sub ExeTransaction (Byval Sqlstrlist as string())
Dim Conn As String =
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Tax.mdb"
Dim trans as OledbTransaction=Nothing
Try
If conn.State=connectionstate.closed then
Conn.open()
End if
Dim cmd as oledbCommand=new oledbcommand()
cmd.connection=conn
cmd.commandtype=commandtype.text
trans=conn.BeginTransaction()
cmd.Transaction=trans
dim I as integer
for I=0 to Sqlstrlist.GetupperBound(0)
cmd.commandText= Sqlstrlist(i) ‘取得参数(数组)中的值
cmd.ExecuteNonQuery()
Next
Trans.commit()
Catch ex as oledbexception
Trans.Rollback()
Fanlly
Conn.close()
End try
End sub
二、利用Dataset
public sub Insert()
‘建立datatable数据源
dim dt as DataTable=New DataTable()
Dim dr as DataRow
Dt.Columns.Add(new DataColumn(“name”))
Dim j as Integer
For j =0 to 10
Dr=dt.newrow()
Dr(0)=”name”+j.toString
Dt.Rows.Add(dr)
Next
Dim Conn As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=Tax.mdb"
Conn.open()
Dim MyAdapter as Oledbdataadapter=new OleDataAdapter()
….
Dim cmd as Oledbcommand=New Oledbcommand(“Insert Into table(name)
values (@name)”,conn)
cmd.parameters.item(“@name”).SourceColumns=dt.columns(“name”).columnsName
myAdapter.update(dt)
conn.close()
end sub
利用以上的两种方法,都可以完成向数据库批量插入数据。
webdiyer 2004-10-26
  • 打赏
  • 举报
回复
第一个问题,可以批量传递参数值,看这个帖子中我发的存储过程:
http://search.csdn.net/Expert/topic/2413/2413959.xml?temp=.9875299

第二个问题,你需要将先前修改的数据保存在Session或其它地方,然后一起提交。

62,046

社区成员

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

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

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

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