战神白起
一战成名


这是来源于网上那篇著名的单击修改,双击提交的文章。此文所述代码为C#,我把它翻译成VB.net。虽然代码经翻译后,有一些写法并不规范,但可以运行。实用比形象重要。哈哈!

Public Class modifydata
    
Inherits System.Web.UI.Page
    
Protected WithEvents SqlDataAdapter1 As System.Data.SqlClient.SqlDataAdapter
    
Protected WithEvents SqlSelectCommand1 As System.Data.SqlClient.SqlCommand
    
Protected WithEvents SqlInsertCommand1 As System.Data.SqlClient.SqlCommand
    
Protected WithEvents SqlConnection1 As System.Data.SqlClient.SqlConnection
    
Protected WithEvents objModi As etgl.modi
    
Protected WithEvents lblPageCount As System.Web.UI.WebControls.Label
    
Protected WithEvents lblCurrentIndex As System.Web.UI.WebControls.Label
    
Protected WithEvents btnFirst As System.Web.UI.WebControls.LinkButton
    
Protected WithEvents btnPrev As System.Web.UI.WebControls.LinkButton
    
Protected WithEvents btnNext As System.Web.UI.WebControls.LinkButton
    
Protected WithEvents MyDataGrid As System.Web.UI.WebControls.DataGrid
    
Protected WithEvents btnLast As System.Web.UI.WebControls.LinkButton

Web 窗体设计器生成的代码

    
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        
'在此处放置初始化页的用户代码
        If Not IsPostBack Then
            btnFirst.Text 
= "最首页"
            btnPrev.Text 
= "前一页"
            btnNext.Text 
= "下一页"
            btnLast.Text 
= "最后页"
            SetBind()
        
End If
    
End Sub


    
Private Sub SetBind()
        
Me.SqlSelectCommand1.CommandText = "select * from sheet1"
        
Try
            
Me.loadDataSet()
            
Me.MyDataGrid.DataBind()
            ShowStats()
        
Catch eLoad As System.Exception
            
Me.Response.Write(eLoad.Message)
        
End Try
    
End Sub


    
Sub loadDataSet()
        
Dim objDataSetTemp As etgl.modi
        objDataSetTemp 
= New etgl.modi()
        
Try
            
Me.fillDataSet(objDataSetTemp)

        
Catch eFillDataSet As System.Exception
            
Throw eFillDataSet
        
End Try
        
Try
            objModi.Clear()
            objModi.Merge(objDataSetTemp)
        
Catch eLoadMerge As System.Exception
            
Throw eLoadMerge
        
End Try

    
End Sub

    
Sub fillDataSet(ByVal dataSet As etgl.modi)
        dataSet.EnforceConstraints 
= False
        
Try
            
Me.SqlConnection1.Open()
            
Me.SqlDataAdapter1.Fill(dataSet)
        
Catch fillException As System.Exception
            
Throw fillException
        
Finally
            dataSet.EnforceConstraints 
= True
            
Me.SqlConnection1.Close()
        
End Try
    
End Sub




    
Sub MyDataGrid_Page(ByVal sender As ObjectByVal e As DataGridPageChangedEventArgs)
        
Dim startIndex As Integer
        startIndex 
= MyDataGrid.CurrentPageIndex * MyDataGrid.PageSize
        MyDataGrid.CurrentPageIndex 
= e.NewPageIndex
        SetBind()
        ShowStats()
    
End Sub


    
Sub ShowStats()
        lblCurrentIndex.Text 
= "第 " + (MyDataGrid.CurrentPageIndex + 1).ToString() + " 页"
        lblPageCount.Text 
= "总共 " + MyDataGrid.PageCount.ToString() + " 页"
    
End Sub



    
Sub PagerButtonClick(ByVal sender As ObjectByVal e As EventArgs)
        
'used by external paging UI
        Dim arg As String = sender.CommandArgument

        
Select Case arg
            
Case "next"
                
If (MyDataGrid.CurrentPageIndex < (MyDataGrid.PageCount - 1)) Then
                    MyDataGrid.CurrentPageIndex 
+= 1
                
End If
            
Case "prev"
                
If (MyDataGrid.CurrentPageIndex > 0Then
                    MyDataGrid.CurrentPageIndex 
-= 1
                
End If
            
Case "last"
                MyDataGrid.CurrentPageIndex 
= (MyDataGrid.PageCount - 1)
            
Case Else
                
'page number
                MyDataGrid.CurrentPageIndex = System.Convert.ToInt32(arg)
        
End Select
        SetBind()
        ShowStats()
    
End Sub


    
Private Sub myDataGrid_ItemDataBound(ByVal sender As ObjectByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles MyDataGrid.ItemDataBound
        
If e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem Then
            e.Item.Attributes.Add(
"onclick""__doPostBack('" + CType(e.Item.Cells(9).Controls(0), LinkButton).ClientID.Replace("__""$_"+ "','')")
        
End If
        
If e.Item.ItemType = ListItemType.EditItem Then
            e.Item.Attributes.Add(
"ondblclick""__doPostBack('" + CType(e.Item.Cells(10).Controls(0), LinkButton).ClientID.Replace("__""$_"+ "','')")
            
Dim i As Integer
            
For i = 0 To 8
                
CType(e.Item.Cells(i).Controls(0), TextBox).Attributes.Add("onmouseover""this.select()")
            
Next i
        
End If

    
End Sub


    
Private Sub myDataGrid_ItemCommand(ByVal source As ObjectByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles MyDataGrid.ItemCommand
        
If e.CommandName = "edit" Then
            
Me.MyDataGrid.EditItemIndex = e.Item.ItemIndex
            SetBind()
        
End If
        
If e.CommandName = "update" Then
            
Try

                
Dim conn As New SqlClient.SqlConnection()
                conn 
= New SqlClient.SqlConnection()
                conn.ConnectionString 
= "data source=ZG-DJK3;initial catalog=WEBAPP_DJK;integrated security=SSPI;persist s" & _
        
"ecurity info=False;workstation id=ZG-DJK3;packet size=4096"

                
Dim Update_str As String
                Update_str 
= "update sheet1 set 档号=@档号,顺序=@顺序,原带号=@原带号,分类=@分类,光盘类别=@光盘类别,内容=@内容,拍摄时间=@拍摄时间,归档=@归档,数量=@数量 where ID=@ID"
                
Dim comm As New SqlClient.SqlCommand(Update_str, conn)

                
Dim parm1 As New SqlClient.SqlParameter("@档号", SqlDbType.NVarChar, 255)
                parm1.Value 
= CType(e.Item.Cells(0).Controls(0), TextBox).Text
                
Dim parm2 As New SqlClient.SqlParameter("@顺序", SqlDbType.Int, 4)
                parm2.Value 
= CType(e.Item.Cells(1).Controls(0), TextBox).Text
                
Dim parm3 As New SqlClient.SqlParameter("@原带号", SqlDbType.NVarChar, 50)
                parm3.Value 
= CType(e.Item.Cells(2).Controls(0), TextBox).Text
                
Dim parm4 As New SqlClient.SqlParameter("@分类", SqlDbType.NVarChar, 255)
                parm4.Value 
= CType(e.Item.Cells(3).Controls(0), TextBox).Text
                
Dim parm5 As New SqlClient.SqlParameter("@光盘类别", SqlDbType.NVarChar, 255)
                parm5.Value 
= CType(e.Item.Cells(4).Controls(0), TextBox).Text
                
Dim parm6 As New SqlClient.SqlParameter("@内容", SqlDbType.NVarChar, 255)
                parm6.Value 
= CType(e.Item.Cells(5).Controls(0), TextBox).Text
                
Dim parm7 As New SqlClient.SqlParameter("@拍摄时间", SqlDbType.NVarChar, 255)
                parm7.Value 
= CType(e.Item.Cells(6).Controls(0), TextBox).Text
                
Dim parm8 As New SqlClient.SqlParameter("@归档", SqlDbType.NVarChar, 255)
                parm8.Value 
= CType(e.Item.Cells(7).Controls(0), TextBox).Text
                
Dim parm9 As New SqlClient.SqlParameter("@数量", SqlDbType.Int, 4)
                parm9.Value 
= CType(e.Item.Cells(8).Controls(0), TextBox).Text
                
Dim parm10 As New SqlClient.SqlParameter("@ID", SqlDbType.Int, 4)
                parm10.Value 
= Me.MyDataGrid.DataKeys(e.Item.ItemIndex)
                comm.Parameters.Add(parm1)
                comm.Parameters.Add(parm2)
                comm.Parameters.Add(parm3)
                comm.Parameters.Add(parm4)
                comm.Parameters.Add(parm5)
                comm.Parameters.Add(parm6)
                comm.Parameters.Add(parm7)
                comm.Parameters.Add(parm8)
                comm.Parameters.Add(parm9)
                comm.Parameters.Add(parm10)
                Response.Write(
"success!")


                conn.Open()
                comm.ExecuteNonQuery()
                conn.Close()
            
Catch
            
Finally
                
Me.MyDataGrid.EditItemIndex = -1
                SetBind()
            
End Try
        
End If
    
End Sub

End Class
posted on 2006-02-15 10:39  战神白起  阅读(907)  评论(0编辑  收藏  举报