| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 918 人关注过本帖
标题:如何实现批量增加及更新的问题
只看楼主 加入收藏
C_B_Lu
Rank: 1
等 级:新手上路
威 望:1
帖 子:453
专家分:0
注 册:2006-1-10
收藏
 问题点数:0 回复次数:9 
如何实现批量增加及更新的问题

一个关于批量增加及更新的问题

注意:此DataGridView中的数据源来自两个表.


搜索更多相关主题的帖子: 批量 
2007-05-20 15:02
C_B_Lu
Rank: 1
等 级:新手上路
威 望:1
帖 子:453
专家分:0
注 册:2006-1-10
收藏
得分:0 
个人觉得,所有从事winForm开发的,都应会遇到类似的问题的呀,有没朋友共享你们的例子给我学习一下也好呀。。。

我的邮箱:422123810920001@163.com

帮助那些真正需要帮助的人,是对帮助你的人最好的回报!
2007-05-20 16:06
枫飘天涯
Rank: 2
来 自:北京
等 级:新手上路
威 望:4
帖 子:251
专家分:0
注 册:2006-10-13
收藏
得分:0 

Command对象.CommandText=“SQL语句1”
Command对象.CommandText=“SQL语句2”
然后直接打开 适配器.update();
连接不用打开
updtate 自动打开 自动关闭


*、還⒋聼媽媽德話吧 晩點再戀愛吧
2007-05-20 16:19
C_B_Lu
Rank: 1
等 级:新手上路
威 望:1
帖 子:453
专家分:0
注 册:2006-1-10
收藏
得分:0 
以下是引用枫飘天涯在2007-5-20 16:19:42的发言:

Command对象.CommandText=“SQL语句1”
Command对象.CommandText=“SQL语句2”
然后直接打开 适配器.update();
连接不用打开
updtate 自动打开 自动关闭

我想我可能没有表述清楚,我的意思不是要同时更新两个表,而是同时提交对一个表的多种更新(如同时添加多笔记录,并修改或删除部份记录等),我所说到的两个表是说我DataGridView中的数据源是我用"SELECT tableA.*,tableB.* FROM tableA LEFT OUTER JOIN tableB ON tableA.partID = tableB.partID WHERE WHERE table.ID = 'S70015'"


帮助那些真正需要帮助的人,是对帮助你的人最好的回报!
2007-05-21 00:02
bygg
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:乖乖的心中
等 级:版主
威 望:241
帖 子:13555
专家分:3076
注 册:2006-10-23
收藏
得分:0 
批量添加和更新,用DataAdapter中的Update()就行了.看一下MSDN,上面有现成的代码可以参考

飘过~~
2007-05-21 09:43
小海龟
Rank: 6Rank: 6
等 级:贵宾
威 望:23
帖 子:1068
专家分:4
注 册:2006-8-1
收藏
得分:0 

datagridview中的数据是直接在里面编辑还是新开的form中编辑更新的?


[bc09] 犯强汉者,虽远比诛!
2007-05-21 11:19
C_B_Lu
Rank: 1
等 级:新手上路
威 望:1
帖 子:453
专家分:0
注 册:2006-1-10
收藏
得分:0 
以下是引用小海龟在2007-5-21 11:19:21的发言:

datagridview中的数据是直接在里面编辑还是新开的form中编辑更新的?

希望能在DataGridView中直接编辑数据最好, 如果实现上有困难,另开启一个新的Form也可以呀...


帮助那些真正需要帮助的人,是对帮助你的人最好的回报!
2007-05-22 10:47
bygg
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:乖乖的心中
等 级:版主
威 望:241
帖 子:13555
专家分:3076
注 册:2006-10-23
收藏
得分:0 
直接编辑..Update()

飘过~~
2007-05-22 12:23
小海龟
Rank: 6Rank: 6
等 级:贵宾
威 望:23
帖 子:1068
专家分:4
注 册:2006-8-1
收藏
得分:0 

[bc09] 犯强汉者,虽远比诛!
2007-05-22 14:49
sunshine4666
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2007-5-22
收藏
得分:0 

我做过,首先我做个自定义控件MYDataGridView,在后台先把数据源及表结构邦定好,代码:public partial class DataGridViewBB11 : JEControlLibrary.JEDataGridView
{


/// <summary>
/// 报价单,询价单--数据控件
/// </summary>

private System.Windows.Forms.ContextMenuStrip myContextMenu;
private System.Windows.Forms.ToolStripMenuItem delMenuItem;

private DataTable myDataTable = new DataTable();

public DataGridViewBB11()
{
InitializeComponent();
}

private void InitContextMenu()
{
delMenuItem = new ToolStripMenuItem();
delMenuItem.Text = "删除记录";
delMenuItem.Click += new System.EventHandler(this.delMenuItem_Click);
myContextMenu.Items.AddRange(new ToolStripItem[] { delMenuItem });
}


private void delMenuItem_Click(object sender, System.EventArgs e)
{
if (this.CurrentRow.Index>=0&& this.CurrentRow.Cells[0].Value.ToString() != "" && this.CurrentRow.Cells[0].Value.ToString() != null)
{
if (myDataTable.DefaultView[this.CurrentRow.Index].IsNew)
{
myDataTable.DefaultView[this.CurrentRow.Index].CancelEdit();
}
else
{
myDataTable.DefaultView[this.CurrentRow.Index].Row["DeleteFlag"] = true;
}
}
}

protected override bool ProcessCmdKey(ref System.Windows.Forms.Message msg, System.Windows.Forms.Keys keyData)
{

if (msg.WParam.ToInt32() == (int)Keys.Enter)
{
SendKeys.Send("{down}");
return (true);

}

return base.ProcessCmdKey(ref msg, keyData);
}

public void InitdgvBB11()
{

myContextMenu = new System.Windows.Forms.ContextMenuStrip();
InitContextMenu();
myDataTable.TableName = "myDataTable";
DataColumn dc;

dc = myDataTable.Columns.Add("BB1101",typeof(string) );
dc.DefaultValue = "";
dc.ColumnMapping = MappingType.Hidden;

dc = myDataTable.Columns.Add( "BB1102",typeof(string));
dc.DefaultValue = "";
dc.Unique = true;

dc = myDataTable.Columns.Add( "BB0502",typeof(string));
dc.DefaultValue = "";

dc = myDataTable.Columns.Add( "BB0503",typeof(string) );
dc.DefaultValue = "";

dc = myDataTable.Columns.Add("BB0506",typeof(string) );
dc.DefaultValue = "";

dc = myDataTable.Columns.Add("BB0509",typeof(string) );
dc.DefaultValue = "";

dc = myDataTable.Columns.Add("BB1103",typeof(decimal) );
dc.DefaultValue = 0;

dc = myDataTable.Columns.Add("AA9904",typeof(string) );
dc.DefaultValue = "";

dc = myDataTable.Columns.Add("DeleteFlag",typeof(bool) );
dc.DefaultValue = false;
dc.ColumnMapping = MappingType.Hidden;

this.ReadOnly = false;
this.AllowUserToAddRows = true;
this.SelectionMode = DataGridViewSelectionMode.RowHeaderSelect;

this.DataSource = myDataTable;
myDataTable.DefaultView.RowFilter = "DeleteFlag = false";

this.Columns.Clear();

this.Columns.Add(new DataGridViewTextBoxColumn());
this.Columns[0].DataPropertyName = "BB1102";
this.Columns[0].AutoSizeMode= System.Windows.Forms.DataGridViewAutoSizeColumnMode.DisplayedCells;
this.Columns[0].HeaderText = "商品编码";
((DataGridViewTextBoxColumn)this.Columns[0]).ContextMenuStrip = myContextMenu;
((DataGridViewTextBoxColumn)this.Columns[0]).MaxInputLength = 10;

this.Columns.Add(new DataGridViewTextBoxColumn());
this.Columns[1].DataPropertyName = "BB0502";
this.Columns[1].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.DisplayedCells;
this.Columns[1].HeaderText = "自定义码";
((DataGridViewTextBoxColumn)this.Columns[1]).ContextMenuStrip = myContextMenu;
this.Columns[1].ReadOnly = true;
this.Columns[1].DefaultCellStyle.BackColor = Color.LightGray;

this.Columns.Add(new DataGridViewTextBoxColumn());
this.Columns[2].DataPropertyName = "BB0503";
this.Columns[2].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.DisplayedCells;
this.Columns[2].HeaderText = "商品名称";
((DataGridViewTextBoxColumn)this.Columns[2]).ContextMenuStrip = myContextMenu;
this.Columns[2].ReadOnly = true;
this.Columns[2].DefaultCellStyle.BackColor = Color.LightGray;

this.Columns.Add(new DataGridViewTextBoxColumn());
this.Columns[3].DataPropertyName = "BB0506";
this.Columns[3].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.DisplayedCells;
this.Columns[3].HeaderText = "单位";
((DataGridViewTextBoxColumn)this.Columns[3]).ContextMenuStrip = myContextMenu;
this.Columns[3].ReadOnly = true;
this.Columns[3].DefaultCellStyle.BackColor = Color.LightGray;

this.Columns.Add(new DataGridViewTextBoxColumn());
this.Columns[4].DataPropertyName = "BB0509";
this.Columns[4].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.DisplayedCells;
this.Columns[4].HeaderText = "商品规格";
((DataGridViewTextBoxColumn)this.Columns[4]).ContextMenuStrip = myContextMenu;
this.Columns[4].ReadOnly = true;
this.Columns[4].DefaultCellStyle.BackColor = Color.LightGray;

this.Columns.Add(new DataGridViewTextBoxColumn());
this.Columns[5].DataPropertyName = "BB1103";
this.Columns[5].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.DisplayedCells;
this.Columns[5].HeaderText = "商品价格";
((DataGridViewTextBoxColumn)this.Columns[5]).ContextMenuStrip = myContextMenu;

this.Columns.Add(new DataGridViewTextBoxColumn());
this.Columns[6].DataPropertyName = "AA9904";
this.Columns[6].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
this.Columns[6].HeaderText = "备注";
((DataGridViewTextBoxColumn)this.Columns[6]).ContextMenuStrip = myContextMenu;

}
直接在界面上删除,新增,修改任何记录,后执行一个事务,执行批量SQL语句:
如:
private void SaveData()
{
this.cbkBB1007.Focus();
Jmeport.DataService.BLL.BB10 bll = new Jmeport.DataService.BLL.BB10();
Jmeport.DataService.Model.BB10 model = new Jmeport.DataService.Model.BB10();
model.BB1001 = this.tbxBB1001.Text;
model.BB1002 = this.cbxBA01.SelectedValue.ToString();
model.BB1003 = this.dtpBB1003.Value;
model.BB1004 = int.Parse(this.tbxBB1004.Text);
model.BB1005 = DateTime.Parse(this.tbxBB1005.Text);
model.BB1006 = "0";
model.BB1007 = this.cbkBB1007.Checked ? "1" : "0";
model.BB1008 = "";
model.BB1009 = "";
model.AA9904 = this.tbxAA9904.Text;
model.AA9901 = "1010";
if (addnew)
{
if (bll.Exists(model.BB1001))
{
MessageBox.Show("此报价单编码已被他人占用,请刷新后再试!", "提醒对话框", MessageBoxButtons.OK, MessageBoxIcon.Information);
this.lblRefresh.Visible = true;
return;
}
else
{
this.arrayList.Add(bll.AddSQL(model));
}
}
else
{
this.arrayList.Add(bll.UpdateSQL(model));
}
SaveDgvBB11SQL();
try
{
bll.ExecuteSqlTran(arrayList);//执行多条SQL语句,事务处理
kp.ClearHashtable();
kp.KeepData(this.Controls);
this.dgvBB11.Tag = "false";
callBack();
MessageBox.Show("数据成功保存!", "提醒对话框", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception ee)
{
MessageBox.Show("系统异常,数据保存失败!"+ee.Message, "警告对话框", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}

修改记录时加载数据:
private void filldgvDataRow(string BB1001)
{
Jmeport.DataService.BLL.BB11 bll = new Jmeport.DataService.BLL.BB11();
DataTable rDt = bll.GetList("BB1101='" + BB1001 + "'").Tables[0];
DataTable tDt = this.dgvBB11.DataSource as DataTable;
tDt.Rows.Clear();
if (rDt.Rows.Count > 0)
{
foreach (DataRow rDr in rDt.Rows)
{
tDt.Rows.Add(rDr["BB1101"], rDr["BB1102"], rDr["BB0502"], rDr["BB0503"], rDr["BB0506"], rDr["BB0509"], rDr["BB1103"], rDr["AA9904"]);
}
}
}
大概就这样,某些细节再自己完善吧

2007-05-22 15:27
快速回复:如何实现批量增加及更新的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016646 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved