当前位置:首页
开发技术指南» 文章正文
    引言:
 

 

 ·问一个很怪的问题    »显示摘要«
    摘要: 我在我的显示数据的页面的显示方式改成了文档型,也就是加了一句 response.contenttype="application/msword" 我每次运行这个页面的时候,它老是会弹出一个“下载询问”的窗口 问你是要保存还是要直接打开等等。 我怎么样可以使每次运行这个页面的时候,不要弹出这个窗口, 我在那个“在打开这种类型的文件前始终询问”的勾去掉,它还是每次都弹出了这......
    摘要: 请问combobox里怎么把treeview放进去?我看到有些软件都有这个东东!!! 谁教教我,急。 ......


DataGrid更新一发

我在Windows窗体中添加了一DataGrid,和数据库绑定了,能显示数据库信息。现想实现DataGrid的数据实时更新,想通过在DataGrid框中修改数据,而后按保存键保存到数据库,并能在DataGrid中显示更新。试了一天了好多方法都没用。适配器和数据集都是拉的控键。请教各位前辈了,很急的!

NO.1   作者: isage2002

Private   Sub   btnUpdate_Click(ByVal   sender   As   System.Object,   ByVal   e   As   System.EventArgs)   Handles   btnUpdate.Click  
                  Try  
                          尝试更新数据源。  
                          Me.UpdateDataSet()  
                  Catch   eUpdate   As   System.Exception  
                          在此处添加错误处理代码。  
                          显示错误信息(如果有)。  
                          System.Windows.Forms.MessageBox.Show(eUpdate.Message)  
                  End   Try  
   
          End   Sub  
          Private   Sub   btnLoad_Click(ByVal   sender   As   System.Object,   ByVal   e   As   System.EventArgs)   Handles   btnLoad.Click  
                  Try  
                          尝试加载数据集。  
                          Me.LoadDataSet()  
                  Catch   eLoad   As   System.Exception  
                          在此处添加错误处理代码。  
                          显示错误信息(如果有)。  
                          System.Windows.Forms.MessageBox.Show(eLoad.Message)  
                  End   Try  
   
          End   Sub  
          Private   Sub   btnCancelAll_Click(ByVal   sender   As   System.Object,   ByVal   e   As   System.EventArgs)   Handles   btnCancelAll.Click  
                  Me.Ds保险账号1.RejectChanges()  
   
          End   Sub  
          Public   Sub   UpdateDataSet()  
                  创建一个新数据集来保存对主数据集所做的更改。  
                  Dim   objDataSetChanges   As   保险账号管理.ds保险账号   =   New   保险账号管理.ds保险账号  
                  停止当前的任何编辑。  
                  For   i   As   Integer   =   1   To   grd保险账号.Rows.Count  
                          If   IsDBNull(grd保险账号.Rows(i   -   1).Item(6))   =   True   Then  
                                  grd保险账号.Rows(i   -   1).Item(6)   =   False  
                          End   If  
                  Next  
   
                  Me.BindingContext(Ds保险账号1,   "保险账号").EndCurrentEdit()  
                  获取对主数据集所做的更改。  
                  objDataSetChanges   =   CType(Ds保险账号1.GetChanges,   保险账号管理.ds保险账号)  
                  检查是否做了任何更改。  
                  If   (Not   (objDataSetChanges)   Is   Nothing)   Then  
                          Try  
                                  需要做一些更改,所以尝试通过调用   update   方法  
                                  和传递数据集以及任何参数来更新数据源。  
                                  Me.UpdateDataSource(objDataSetChanges)  
                                  Ds保险账号1.Merge(objDataSetChanges)  
                                  Ds保险账号1.AcceptChanges()  
                          Catch   eUpdate   As   System.Exception  
                                  在此处添加错误处理代码。  
                                  Throw   eUpdate  
                          End   Try  
                          添加代码以检查返回的数据集中是否有任何可能已被  
                          推入到行对象错误中的错误。  
                  End   If  
   
          End   Sub  
          Public   Sub   LoadDataSet()  
                  创建一个新数据集以保存从   FillDataSet   调用返回的记录。  
                  使用了一个临时数据集,这是因为填充现有的数据集  
                  需要重新绑定数据绑定。  
                  Dim   objDataSetTemp   As   保险账号管理.ds保险账号  
                  objDataSetTemp   =   New   保险账号管理.ds保险账号  
                  Try  
                          尝试填充临时数据集。  
                          Me.FillDataSet(objDataSetTemp)  
                  Catch   eFillDataSet   As   System.Exception  
                          在此处添加错误处理代码。  
                          Throw   eFillDataSet  
                  End   Try  
                  Try  
                          grd保险账号.DataSource   =   Nothing  
                          清空数据集中的旧记录。  
                          Ds保险账号1.Clear()  
                          将记录合并到主数据集中。  
                          Ds保险账号1.Merge(objDataSetTemp)  
                          grd保险账号.SetDataBinding(Ds保险账号1,   "保险账号")  
                  Catch   eLoadMerge   As   System.Exception  
                          在此处添加错误处理代码。  
                          Throw   eLoadMerge  
                  End   Try  
   
   
   
                  grd保险账号.Cols(4).Width   =   200  
                  grd保险账号.Cols(4).TextAlignFixed   =   C1.Win.C1FlexGrid.TextAlignEnum.CenterCenter  
                  Dim   c   As   C1.Win.C1FlexGrid.Column   =   grd保险账号.Cols(2)  
                  c.Name   =   "保险类别"  
                  c.DataType   =   GetType(List保险类别)  
   
   
   
          End   Sub  
          Public   Sub   UpdateDataSource(ByVal   ChangedRows   As   保险账号管理.ds保险账号)  
   
   
                  Try  
                          在有挂起的更改时,只需要更新数据源即可。  
                          If   (Not   (ChangedRows)   Is   Nothing)   Then  
                                  打开连接。  
                                  Me.SqlConnection1.Open()  
                                  尝试更新数据源。  
                                  SqlDataAdapter1.Update(ChangedRows)  
                          End   If  
                  Catch   updateException   As   System.Exception  
                          在此处添加错误处理代码。  
                          Throw   updateException  
                  Finally  
                          无论是否引发了异常都关闭连接。  
                          Me.SqlConnection1.Close()  
                  End   Try  
   
          End   Sub  
          Public   Sub   FillDataSet(ByVal   dataSet   As   保险账号管理.ds保险账号)  
                  在填充数据集前关闭约束检查。  
                  这允许适配器填充数据集而不用考虑  
   
                  表之间的依赖项。  
                  dataSet.EnforceConstraints   =   False  
                  Try  
                          打开连接。  
                          Me.SqlConnection1.Open()  
                          尝试通过   OleDbDataAdapter1   填充数据集。  
                          Me.SqlDataAdapter1.Fill(dataSet)  
                  Catch   fillException   As   System.Exception  
                          在此处添加错误处理代码。  
                          Throw   fillException  
                  Finally  
                          重新打开约束检查。  
                          dataSet.EnforceConstraints   =   True  
                          无论是否引发了异常都关闭连接。  
                          Me.SqlConnection1.Close()  
                  End   Try  
   
          End   Sub

NO.2   作者: ganenpingsohucom

点击按钮更新  
  Private   Sub   Button3_Click(ByVal   sender   As   System.Object,   ByVal   e   As   System.EventArgs)   Handles   Button3.Click  
                  Try  
                          SqlConnection1.Open()  
                          Dim   mycom   As   New   SqlCommand(SqlUpdateCommand1.CommandText,_    
                                                                                    SqlConnection1)  
                          mycom.ExecuteNonQuery()  
                          SqlConnection1.Close()  
                          DataSet11.Clear()  
                          SqlDataAdapter1.Fill(DataSet11)  
                          DataGrid1.datasource=dataset11  
                  Catch   ex   As   Exception  
                          MsgBox(ex.ToString)  
                  End   Try  
          End   Sub  
  点击保存  
  Private   Sub   Button3_Click(ByVal   sender   As   System.Object,   ByVal   e   As   System.EventArgs)   Handles   Button3.Click  
                  Try  
                          SqlConnection1.Open()  
                          Dim   mycom   As   New   SqlCommand(SqlUpdateCommand1.CommandText,_    
                                                                                    SqlConnection1)  
                          mycom.ExecuteNonQuery()  
                          SqlConnection1.Close()  
                          dim   CmdBuild   as   new   SqlCommandBuilder(SqlDataAdapter1)  
                          SqlDataAdapter1.Update(DataSet11)  
                          MsgBox("OK!")  
                  Catch   ex   As   Exception  
                          MsgBox(ex.ToString)  
                  End   Try  
          End   Sub  
 

NO.3   作者: asam2183

改为:  
  Private   Sub   Main_Load(ByVal   sender   As   Object,   ByVal   e   As   System.EventArgs)   Handles   MyBase.Load  
    Try  
                If   Not   IsPostBack   Then  
                        SqlConnection1.Open()  
                        Me.SqlDataAdapter1.Fill(DataSet11)  
                        SqlConnection1.Close()  
                End   If  
    Catch   ex   As   Exception  
                ex.Message  
    End   Try  
  End   Sub

NO.4   作者: cnhgj

更新后再重新绑定就可以了

NO.5   作者: zwq78

不要重新绑定,这样数据量很大时很费时间。应该参见vs.net自动生成的代码,是isertcommand和updatecommand的sql语句都是更新后,再选择这个更新成功的行出来,然后设置好dataadapter的tablemapping属性。关健语句如下:  
              Me.SqlInsertCommand1.CommandText   =   "INSERT   INTO   A02(pid,   status,   C0203,   C0205,   C0206,   C0201,   C0204)   VALUES   (@pid,   @status,   @C0203,   @C0205,   @C0206,   @C0201,   @C0204);   SELECT   id,   pid,   status,   C0203,   C0205,   C0206,   C0201,   C0204   FROM   A02   WHERE   (id   =   @@IDENTITY)"  
                  Me.SqlDataAdapter1.TableMappings.AddRange(New   System.Data.Common.DataTableMapping()   {New   System.Data.Common.DataTableMapping("Table",   "A02",   New   System.Data.Common.DataColumnMapping()   {New   System.Data.Common.DataColumnMapping("id",   "id")})})这里本来是对所有的字段都做了映射的,我只需要一列ID就把其它的删除了。  
   
  最后要注意的是da.update时,不要只是更新已改变的数据。  
  da.update(datatable.getchanged)  
  而是更新整个表  
  da.update(datatable)  
  我在这个问题上花了很多时间才找出这个原因。  
   
 


    摘要: 谢谢! ......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE