怎么把选定的数据,点击OK按钮后,批量写入datatalbe后,可以在datatable中更改,然后一次性写入数据库。
我的代码如下,怎么不行?
public void insertBtn_click(object sender,EventArgs e)
{
//Response.Write("<script language=javascript>alert('测试成功!')</script>");
DataSet ds = new DataSet("ds_dry");//创建一个名为ds_dry的DataSet DataTable dt = new DataTable("dt_dry");//创建一个名为dt_dry的DataTalbe dt.Columns.Add(new DataColumn("buyersid",typeof(string)));
dt.Columns.Add(new DataColumn("buyersname",typeof(string)));
dt.Columns.Add(new DataColumn("goodsid",typeof(string)));//为dt_dry表内建立Column
dt.Columns.Add(new DataColumn("goodsname", typeof(string)));
dt.Columns.Add(new DataColumn("goodsgg",typeof(string)));
dt.Columns.Add(new DataColumn("goodsjh",typeof(string)));
dt.Columns.Add(new DataColumn("goodsxs",typeof(string)));
dt.Columns.Add(new DataColumn("goodskc",typeof(string)));
dt.Columns.Add(new DataColumn("timer", typeof(DateTime))); for( int i = 0; i < jxcLrSerchGrid.Items.Count; i++ )
{
CheckBox lrchk = (CheckBox)jxcLrSerchGrid.Items[i].FindControl("jxcCheck");
if( lrchk.Checked == true )
{
string lrbuyersid=Session["buyeriId"].ToString(); //客户编号
string lrbuyersname=Session["buyersName"].ToString(); //客户名称
string goodsid=jxcLrSerchGrid.Items[i].Cells[1].Text; //得到商品编号
string goodsname= jxcLrSerchGrid.Items[i].Cells[2].Text; //得到商品名称
string goodsgg=jxcLrSerchGrid.Items[i].Cells[3].Text; //得到商品规格
TextBox dnjh;
dnjh=(TextBox)jxcLrSerchGrid.Items[i].FindControl("dnjh");
TextBox dnxs;
dnxs=(TextBox)jxcLrSerchGrid.Items[i].FindControl("dnxs");
TextBox dnkc;
dnkc=(TextBox)jxcLrSerchGrid.Items[i].FindControl("dnkc"); DataRow dr = dt.NewRow();//注意这边创建dt的新行的方法。指定类型是DataRow而不是TableRow,然后不用new直接的用创建的DataTable下面的NewRow方法。
dr["buyersid"]=lrbuyersid;
dr["buyersname"]=lrbuyersname;
dr["goodsid"]=goodsid;
dr["goodsname"]=goodsname;
dr["goodsgg"] =goodsgg;
dr["goodsjh"] =dnjh.Text;
dr["goodsxs"] =dnxs.Text;
dr["goodskc"] =dnkc.Text;
dr["timer"] = s;
dt.Rows.Add(dr);
}
} ds.Tables.Add(dt);//别忘记向ds中添加table Session["ds"] = ds;//存储在sessin里面,方便下面调用
fill();
}
private void fill()
{
DataSet ds = (DataSet)Session["ds"];//进行强制类型转换
lrDataGrid.DataSource = ds;
lrDataGrid.DataBind();
}
解决方案 »
- ajaxpro影响全局捕获异常有好的解决办法吗?
- 2003 转 2005 出无法将输入 xml 文件内容转换为数据集错误
- 如何限定几个控件和文字只能显示在同一行。
- 在大连的程序员都拿多少米啊?
- asp.net求带上传本地图片的副文本编辑器
- asp.net生页html分页列表的问题
- 求asp.net网站实例解析
- 請各位幫個忙
- 在线等了,页面上的互斥问题,在保存数据时,如果A.Text有数据就保存A.Text,B.Text有数据就保存B.Text,两个都有想谈出一个提示框,询问是
- SignalR 基础问题
- 大实话!用户登陆成功后我压根不知道怎么调用前用户的各种信息!!谢谢!
- 求助如何用在TEXTBOX中使用SQL比较运算符
然后用insert语句插入数据库!
objCmd.CommandText = "INSERT INTO yourtablename VALUES (@v0,@v1,@v2,@v3,@v4,@v5,@v6,@v7,@v8,@v9,@v10,@v11,..............)";
OleDbParameter parameter;
try
{
for(int i=0;i< dt.Rows.Count;i++)
{
for(int j=0; j< dt.Columns.Count; j++)
{
parameter = new OleDbParameter("@v"+j.ToString(),OleDbType.VarChar);
parameter.Value =dt.Rows[i][j].ToString();
objCmd.Parameters.Add(parameter);
}
objCmd.ExecuteNonQuery();
objCmd.Parameters.Clear();
}
}
catch(Exception e)
{
Response.Write(e.Message.ToString());
objConn.Close();
return;
}
UP
jxcLrSerchGrid.Items.Count 点完OK安钮后,老是0
把你选中的数据拼成一个DataTable,然后传给sqladapter去update()
或是对选中的行进行循环,一行一行insert
中能找到 CheckBox lrchk = (CheckBox)jxcLrSerchGrid.Items[i].FindControl("jxcCheck"); 这刚代码报错吗?
insert into aa
select 数据1,数据11 union all
select 数据2,数据22
的写法
能得到jxcLrSerchGrid.Items.Count数就解决问题了。
for (int rowindex = 0; rowindex < this.GridViewPDXZ.jxcLrSerchGrid.Count; rowindex++)
{
CheckBox lrchk = (CheckBox)jxcLrSerchGrid.Rows[rowindex].Cells[0]..FindControl("jxcCheck");
}
把要写的数据提取出来保存xml,
需要更改的话就对这个xml进行操作,
OK就把xml数据更改进数据库
改成下面的试试:
for (int rowindex = 0; rowindex < this.jxcLrSerchGrid.Rows.Count; rowindex++)
{
CheckBox lrchk = (CheckBox)jxcLrSerchGrid.Rows[rowindex].Cells[0]..FindControl("jxcCheck");
}
sql中的临时表有两种,全局临时表和局部临时表,通过以下语句创建:
create table #临时表名(局部)
或
create table ##临时表名(全局)
这种临时表保存在内存,随页面的结束而结束!!楼主说的是实际的表吧!!
建议楼主,保存的数据太复杂时,可以不用Session,而用局部临时表!!