DataGrid能一次修改多行记录吗?如果不行,有其他方法实现吗?

本文介绍了一个ASP.NET应用程序中如何进行数据验证并更新数据库。包括检查实际数量、超额数量等字段的有效性,并确保日期格式正确且在工作日内。同时讨论了如何使用模板列来改进数据网格视图。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

private   bool   updateValue()  
  {  
  bool   bCanSave   =   true;  
  bool   bCommitDate   =   true;  
  bool   bRepairNegative   =   false;  
  bool   bIsWorkingDay   =   true;  
  bool   bIsValidDay   =   true;  
  bool   bolOB   =   true;  
  foreach(DataGridItem   dgi   in   dgCustInvItem.Items)  
  {  
  ListItemType   lit   =   dgi.ItemType;  
  if   (lit   ==   ListItemType.Item   ||   lit   ==   ListItemType.AlternatingItem)  
  {  
  TextBox   txtActualQty   =   (TextBox)dgi.FindControl("txtActualQty");  
  TextBox   txtLineType   =   (TextBox)dgi.FindControl("txtLineType");    
  TextBox   txtOV   =   (TextBox)dgi.FindControl("OV_QTY");  
  TextBox   txtOB   =   (TextBox)dgi.FindControl("OB_QTY");  
  TextBox   txtOTHERS   =   (TextBox)dgi.FindControl("OTHERS_QTY");  
  TextBox   txtSCRAPE   =   (TextBox)dgi.FindControl("SCRAPE_QTY");  
   
  int   iActualQty   =   0;  
  try  
  {  
  iActualQty   =   Convert.ToInt32(txtActualQty.Text.Trim());  
  }  
  catch  
  {}  
   
  int   iOvQty   =   0;  
  try  
  {  
  iOvQty   =   Convert.ToInt32(txtOV.Text.Trim());  
  }  
  catch  
  {}  
   
  int   iObQty   =   0;  
  try  
  {  
  iObQty   =   Convert.ToInt32(txtOB.Text.Trim());  
  }  
  catch  
  {}  
   
  int   iOthersQty   =   0;  
  try  
  {  
  iOthersQty   =     Convert.ToInt32(txtOTHERS.Text.Trim());  
  }  
  catch  
  {}  
   
  int   iScrapeQty   =   0;  
  try  
  {  
  iScrapeQty   =     Convert.ToInt32(txtSCRAPE.Text.Trim());  
  }  
  catch  
  {}  
   
  if(txtLineType.Text.Trim()   ==   "EXTRA")  
  {  
  if   (iActualQty==0)  
  {  
  bCanSave   =   false;  
  }  
  }  
  if(iActualQty-iOvQty-iObQty-iOthersQty-iScrapeQty   <   0)  
  {  
  bRepairNegative   =   true;  
  }  
   
  TextBox   txtCommitDate   =   (TextBox)dgi.FindControl("COMMIT_DATE");  
  try  
  {  
  DateTime   dtDate   =   Convert.ToDateTime(txtCommitDate.Text.Trim());  
  }  
  catch  
  {  
  bCommitDate   =   false;  
  }  
  if(bCommitDate   &&   bIsWorkingDay)  
  {  
  com.siemens.smi.rgm.components.Calendar   objCalendar   =   new   com.siemens.smi.rgm.components.Calendar(DateTime.Now);  
  bIsWorkingDay   =   objCalendar.checkWorkingDate(txtCommitDate.Text.Trim());  
  }  
  if   (bCommitDate   &&   bIsWorkingDay   &&   bIsValidDay)  
  {  
  DateTime   dtDate   =   Convert.ToDateTime(txtCommitDate.Text.Trim()   +   "   23:59:59");  
  if(dtDate   <   DateTime.Now)  
  {  
  bIsValidDay   =   false;  
  }  
   
  }  
  //For   OB   item,   OB   qty   must   equal   to   actual   receive   qty  
  CustInvLine   line   =   new   CustInvLine();  
  DataTable   dtTmp   =   line.FindItem(dgi.Cells[2].Text);  
  if(dtTmp.Rows.Count   >   0)  
  {  
  if(dtTmp.Rows[0]["item_type"].ToString().Trim()   ==   "OB")  
  {  
  if(iActualQty   !=   iObQty)  
  {  
  bolOB   =   false;  
  }  
  }  
  }  
   
  }  
  }  
   
  if(bCanSave   &&   !bRepairNegative   &&   bCommitDate   &&   bIsWorkingDay   &&   bIsValidDay   &&   bolOB)  
  {  
  CustInvLine   objLine   =   new   CustInvLine();  
  foreach(DataGridItem   dgi   in   dgCustInvItem.Items)  
  {  
   
  ListItemType   lit   =   dgi.ItemType;  
  if   (lit   ==   ListItemType.Item   ||   lit   ==   ListItemType.AlternatingItem)  
  {  
  TextBox   txtActualQty   =   (TextBox)dgi.FindControl("txtActualQty");  
  TextBox   txtOV   =   (TextBox)dgi.FindControl("OV_QTY");  
  TextBox   txtOB   =   (TextBox)dgi.FindControl("OB_QTY");  
  TextBox   txtOTHERS   =   (TextBox)dgi.FindControl("OTHERS_QTY");  
  TextBox   txtSCRAPE   =   (TextBox)dgi.FindControl("SCRAPE_QTY");  
  TextBox   txtRemark   =   (TextBox)dgi.FindControl("txtRemarks");    
  TextBox   txtCommitDate   =   (TextBox)dgi.FindControl("COMMIT_DATE");  
   
  objLine.UpdateQuantity(lblCustID.Text.Trim(),lblCustInv.Text.Trim(),dgi.Cells[1].Text.Trim(),"1",txtActualQty.Text.Trim(),  
  txtOV.Text.Trim(),txtOB.Text.Trim(),txtOTHERS.Text.Trim(),txtSCRAPE.Text.Trim(),txtCommitDate.Text.Trim(),   txtRemark.Text.Trim(),HttpContext.Current.User.Identity.Name);  
  }  
  }  
  btnVerifiy.Enabled   =   true;  
  FillGrid();  
  }  
  else  
  {  
  string   strResponse   =   "";  
  if(bRepairNegative)  
  {  
  strResponse   =   "   <script   language='JavaScript'>"       +  
  "   alert(/"Repair   Quantity   can   not   be   negative!/");"       +  
  "   </script>"     ;  
  }  
  else   if(!bCanSave)  
  {  
  strResponse   =   "   <script   language='JavaScript'>"       +  
  "   alert(/"Actual   Rec'd   Quantity   can   not   be   zero   on   the   EXTRA   line!/");"       +  
  "   </script>"     ;  
  }  
  else   if(!bCommitDate)  
  {  
  strResponse   =   "   <script   language='JavaScript'>"       +  
  "   alert(/"Commit   Date   format   is   wrong   or   can   not   be   blank!/");"       +  
  "   </script>"     ;  
  }  
  else   if(!bIsWorkingDay)  
  {  
  strResponse   =   "   <script   language='JavaScript'>"       +  
  "   alert(/"Commit   Date   is   NON   WORKING   DAY!/");"       +  
  "   </script>"     ;  
  }  
  else   if(!bIsValidDay)  
  {  
  strResponse   =   "   <script   language='JavaScript'>"       +  
  "   alert(/"Commit   Date   must   be   late   than   today!/");"       +  
  "   </script>"     ;  
  }  
  else   if(!bolOB)  
  {  
  strResponse   =   "<script   language=javascript>alert('Obsolete   qty   must   equal   to   actual   received   qty!');</script>";  
  }  
  Response.Write(strResponse);  
  }  
  return   (bCanSave   &&   !bRepairNegative);  
  }

===================================================datagrid增加chackbox模板列  
  然后每行都修改模板列为为Textbox模板列,部分选择或者不选择(帮定列转为模板列后,把选择列的剪切到普通模板列)  
  在一个按钮里面检测checkbox,然后统一更新!

==========================================================================================

用如下的模板列!  
  <asp:TemplateColumn   HeaderText="测试">  
  <ItemTemplate>  
  <asp:TextBox   runat="server"   Text='<%#   DataBinder.Eval(Container,   "DataItem.Test")   %>'   ID="Textbox1">  
  </asp:TextBox>  
  </ItemTemplate>  
  </asp:TemplateColumn>

=======================================================

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值