现在的处理时
1.对gridview绑定数据 private Boolean getMaterialDetailInfo()
{ Boolean rtn = false;
String sql = "Select DetailNo,MaterialName,MaterialStandards," +
" MaterialMeasurement,MaterialQuantity,MaterialUnitPrice,MaterialAmount,MaterialRes " +
" from tb_MaterialOrderDetail where OrderDate = '" + OrderDate + "' and OrderID='" + txtID.Text + "' " +
" Order by DetailNo ";
if (sqlConn.State == ConnectionState.Closed)
{
sqlConn.Open();
}
sqlAdapter = new OleDbDataAdapter(sql, sqlConn); sqldataSet = new DataSet();
sqlAdapter.Fill(sqldataSet);
DataTable SourceDT = new DataTable();
SourceDT = sqldataSet.Tables[0];
DataTable TargetDT = new DataTable();
TargetDT.Columns.Add("行号");
TargetDT.Columns.Add("材料名称");
TargetDT.Columns.Add("规格");
TargetDT.Columns.Add("单位");
TargetDT.Columns.Add("数量");
TargetDT.Columns.Add("单价(元)");
TargetDT.Columns.Add("金额(元)");
TargetDT.Columns.Add("备注");
//todo? no format
initGrid();
String MaterialQuantity = "";
String MaterialUnitPrice = "";
for (int i = 0; i < SourceDT.Rows.Count; i++)
{
DataRow dr = TargetDT.NewRow();
dr[0] = SourceDT.Rows[i][0].ToString();//行号DetailNo
dr[1] = SourceDT.Rows[i][1].ToString();//材料名称MaterialName
dr[2] = SourceDT.Rows[i][2].ToString();//规格MaterialStandards
dr[3] = SourceDT.Rows[i][3].ToString();//单位MaterialMeasurement
MaterialQuantity = SourceDT.Rows[i][4].ToString();//数量MaterialQuantity
MaterialUnitPrice = SourceDT.Rows[i][5].ToString();
dr[4] = MaterialQuantity;//数量MaterialQuantity
dr[5] = MaterialUnitPrice;//单价MaterialUnitPrice
if (MaterialQuantity != "" && MaterialUnitPrice != "")
{
dr[6] = Convert.ToDouble(MaterialQuantity) * Convert.ToDouble(MaterialUnitPrice);//金额MaterialAmount=MaterialQuantity*MaterialUnitPrice
}
else
{
dr[6] = "";
}
dr[7] = SourceDT.Rows[i][7].ToString();//备注
TargetDT.Rows.Add(dr);
rtn = true;
}
dgMaterialOrderI.DataSource = TargetDT;
return rtn;
}
2)删除一行int delRowIndex = dgv.CurrentRow.Index;
dgv.Rows.RemoveAt(delRowIndex);发现只是看起来删除了!
当追加的场合发现datagridview中的内容还是dgMaterialOrderI.DataSource = TargetDT中的内容!! for (int i = 0; i < dgMaterialOrderI.Rows.Count - 1; i++)
{
String sql = " insert into tb_MaterialOrderDetail(SignOrderDate,SignOrderID,OrderID,OrderDate,DetailNo," +
"MaterialName,MaterialStandards,MaterialMeasurement,MaterialQuantity,MaterialUnitPrice,MaterialAmount,MaterialRes) values('" +
SignOrderDate + "','" + lblSignOrder.Text.Substring(8, 3) + "','" +
txtID.Text + "','" + OrderDate + "','" + i + "','" +
dgMaterialOrderI.Rows[i].Cells[1].Value + "','" +
dgMaterialOrderI.Rows[i].Cells[2].Value + "','" +
dgMaterialOrderI.Rows[i].Cells[3].Value + "','" +
dgMaterialOrderI.Rows[i].Cells[4].Value + "','" +
dgMaterialOrderI.Rows[i].Cells[5].Value + "','" +
dgMaterialOrderI.Rows[i].Cells[6].Value + "','" +
dgMaterialOrderI.Rows[i].Cells[7].Value + "')";
OleDbCommand OBJcmd = new OleDbCommand(sql, sqlConn);
OBJcmd.ExecuteNonQuery();
}
1.对gridview绑定数据 private Boolean getMaterialDetailInfo()
{ Boolean rtn = false;
String sql = "Select DetailNo,MaterialName,MaterialStandards," +
" MaterialMeasurement,MaterialQuantity,MaterialUnitPrice,MaterialAmount,MaterialRes " +
" from tb_MaterialOrderDetail where OrderDate = '" + OrderDate + "' and OrderID='" + txtID.Text + "' " +
" Order by DetailNo ";
if (sqlConn.State == ConnectionState.Closed)
{
sqlConn.Open();
}
sqlAdapter = new OleDbDataAdapter(sql, sqlConn); sqldataSet = new DataSet();
sqlAdapter.Fill(sqldataSet);
DataTable SourceDT = new DataTable();
SourceDT = sqldataSet.Tables[0];
DataTable TargetDT = new DataTable();
TargetDT.Columns.Add("行号");
TargetDT.Columns.Add("材料名称");
TargetDT.Columns.Add("规格");
TargetDT.Columns.Add("单位");
TargetDT.Columns.Add("数量");
TargetDT.Columns.Add("单价(元)");
TargetDT.Columns.Add("金额(元)");
TargetDT.Columns.Add("备注");
//todo? no format
initGrid();
String MaterialQuantity = "";
String MaterialUnitPrice = "";
for (int i = 0; i < SourceDT.Rows.Count; i++)
{
DataRow dr = TargetDT.NewRow();
dr[0] = SourceDT.Rows[i][0].ToString();//行号DetailNo
dr[1] = SourceDT.Rows[i][1].ToString();//材料名称MaterialName
dr[2] = SourceDT.Rows[i][2].ToString();//规格MaterialStandards
dr[3] = SourceDT.Rows[i][3].ToString();//单位MaterialMeasurement
MaterialQuantity = SourceDT.Rows[i][4].ToString();//数量MaterialQuantity
MaterialUnitPrice = SourceDT.Rows[i][5].ToString();
dr[4] = MaterialQuantity;//数量MaterialQuantity
dr[5] = MaterialUnitPrice;//单价MaterialUnitPrice
if (MaterialQuantity != "" && MaterialUnitPrice != "")
{
dr[6] = Convert.ToDouble(MaterialQuantity) * Convert.ToDouble(MaterialUnitPrice);//金额MaterialAmount=MaterialQuantity*MaterialUnitPrice
}
else
{
dr[6] = "";
}
dr[7] = SourceDT.Rows[i][7].ToString();//备注
TargetDT.Rows.Add(dr);
rtn = true;
}
dgMaterialOrderI.DataSource = TargetDT;
return rtn;
}
2)删除一行int delRowIndex = dgv.CurrentRow.Index;
dgv.Rows.RemoveAt(delRowIndex);发现只是看起来删除了!
当追加的场合发现datagridview中的内容还是dgMaterialOrderI.DataSource = TargetDT中的内容!! for (int i = 0; i < dgMaterialOrderI.Rows.Count - 1; i++)
{
String sql = " insert into tb_MaterialOrderDetail(SignOrderDate,SignOrderID,OrderID,OrderDate,DetailNo," +
"MaterialName,MaterialStandards,MaterialMeasurement,MaterialQuantity,MaterialUnitPrice,MaterialAmount,MaterialRes) values('" +
SignOrderDate + "','" + lblSignOrder.Text.Substring(8, 3) + "','" +
txtID.Text + "','" + OrderDate + "','" + i + "','" +
dgMaterialOrderI.Rows[i].Cells[1].Value + "','" +
dgMaterialOrderI.Rows[i].Cells[2].Value + "','" +
dgMaterialOrderI.Rows[i].Cells[3].Value + "','" +
dgMaterialOrderI.Rows[i].Cells[4].Value + "','" +
dgMaterialOrderI.Rows[i].Cells[5].Value + "','" +
dgMaterialOrderI.Rows[i].Cells[6].Value + "','" +
dgMaterialOrderI.Rows[i].Cells[7].Value + "')";
OleDbCommand OBJcmd = new OleDbCommand(sql, sqlConn);
OBJcmd.ExecuteNonQuery();
}
解决方案 »
- C#中串口通信的协议怎么写阿 打包拆包怎么回事?
- 请教streamWriter的writeLine方法的数据覆盖问题
- C#如何创建可以在运行时拖动大小的控件
- 急 请教,C#如何创建含有窗体的dll? 我知道VC++可以做这样的dll
- 求助:一个简单的问题
- 召唤大侠们,其实问题并不难。。。(DataSet)
- 正则表达式的问题。难度有点高
- 求教关于属性类的意义,作用和用法?
- 运行水晶报表时发生错误:CrystalDecisions.CrystalReports.Engine.LogOnException: 登录失败
- 图书馆出资10万购计算机类书籍,弟兄们快来推荐好书吧,来者有分。斑竹手下留情
- 向ojlovecd提问,关于对象销毁
- WAP网页编写问题
dgMaterialOrderI中的数据,才可以和看到的相同!谢谢!
foreach (GridViewRow row in this.gridView.Rows) { Control ctrl = row.FindControl("del");
if ((ctrl as CheckBox).Checked) {
TableCellCollection cell = row.Cells; logid = cell[1].Text;//将checkbox选中记录的ID赋给logid logidlist.Add(logid);//将logid的值添加到logidlist数组中 ViewState["logidlist"] = logidlist; } } for (int i = 0; i < logidlist.Count; i++) //此处是一个循环,将遍历数组中的取值,依次删除对应数据库记录 { logidli = logidlist[i].ToString();//将数组中的值依次赋给变量logidli ViewState["logidli"] = logidli; le.deleteLog(ViewState["logidli"].ToString());//在循环中依次删除数据 } dt = le.getData(ViewState["datefrom"].ToString(), ViewState["dateto"].ToString()); //删除数据之后重新执行一次查询,刷新现有数据 this.gridView.DataSource = dt; this.gridView.DataBind(); Response.Write("<script>alert('删除成功!');</script>");
//执行完以上代码之后,提示删除成功
}
如何更新啊?
谢谢两位的回答,有没有办法:同步一下。datagridview表格中内容到datatable中。:)
{
String sql = " insert into tb_MaterialOrderDetail(SignOrderDate,SignOrderID,OrderID,OrderDate,DetailNo," +
"MaterialName,MaterialStandards,MaterialMeasurement,MaterialQuantity,MaterialUnitPrice,MaterialAmount,MaterialRes) values('" +
SignOrderDate + "','" + lblSignOrder.Text.Substring(8, 3) + "','" +
txtID.Text + "','" + OrderDate + "','" + i + "','" +
dgMaterialOrderI.Rows[i].Cells[1].Value + "','" +
dgMaterialOrderI.Rows[i].Cells[7].Value + "')";
OleDbCommand OBJcmd = new OleDbCommand(sql, sqlConn);
OBJcmd.ExecuteNonQuery();
}
SqlConnection con=..
SqlCommand cmd=..
cmd.CommandText=..
cmd.ExcuteNonQuery();
之后重新从数据库中获取数据,GridView的数据源
如果datagridview同步更新的话可以, dataGridView1.Rows.RemoveAt(dataGridView1.CurrentRow.Index);