(VB.net) 利用DataGrid实现查找, 编辑, 修改, 更新, 删除的功能。
Imports System
Imports System.Data
Imports System.Data.SqlClient
Imports System.Configuration
Public Class WebTest
Inherits System.Web.UI.Page
Protected WithEvents ddlSalesArea As System.Web.UI.WebControls.DropDownList
Protected WithEvents dgSFDetail As System.Web.UI.WebControls.DataGrid
Protected WithEvents dgsave As System.Web.UI.WebControls.DataGrid
Protected WithEvents Btnsearch As System.Web.UI.WebControls.Button
Dim myConn As SqlConnection
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'在此处放置初始化页的用户代码 dgsave.EditItemIndex = 2 可编辑的行号
myConn = New SqlConnection(ConfigurationSettings.AppSettings("SqlServerConnectionString"))
End Sub
'查询数据的按钮
Private Sub Btnsearch_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btnsearch.Click
BindData()
BindData2()
dgsave_BindDataGrid()
End Sub
'执行不返回结果集的sql 语句
Private Sub ExecuteSql(ByVal strsql)
Try
Dim myConn As SqlConnection
Dim MyCommand As SqlCommand
myConn = New SqlConnection(ConfigurationSettings.AppSettings("SqlServerConnectionString")) 'web.config中读取
myConn.Open()
MyCommand = New SqlCommand(strsql, myConn)
MyCommand.ExecuteNonQuery()
myConn.Close()
Catch ex As Exception
Response.Write("<script language = 'javascript'>alert('" + ex.Message + "');</script>")
Finally
myConn.Close()
End Try
End Sub
'绑定数据, 重新显示资料
Private Sub BindData()
Dim ls_dept As String
Dim ls_sql As String
Dim li_count As Integer
Dim i As Integer
Dim Dset1 As DataSet
Dim MyCommand As SqlDataAdapter
ls_dept = ddlSalesArea.SelectedValue.ToString()
ls_sql = ls_sql & "SELECT * FROM PUB_TELPHONE WHERE DEPT = '" & ls_dept & "' "
MyCommand = New SqlDataAdapter(ls_sql, myConn)
Dset1 = New DataSet
MyCommand.Fill(Dset1, "phone")
dgSFDetail.DataSource = Dset1.Tables("phone").DefaultView
dgSFDetail.DataBind()
li_count = dgSFDetail.Items.Count
For i = 1 To li_count
If (i Mod 2 = 0) Then
'dgSFDetail.SelectedItemStyle.BackColor = ""
Else
End If
Next
End Sub
'dgsave的绑定
Private Sub BindData2()
Dim ls_dept As String
Dim ls_sql As String
Dim Dset2 As DataSet
Dim MyCommand As SqlDataAdapter
'ls_dept = ddlSalesArea.SelectedValue.ToString()
ls_dept = ""
ls_sql = ls_sql & "SELECT * FROM PUB_TELPHONE WHERE DEPT = '" & ls_dept & "' "
MyCommand = New SqlDataAdapter(ls_sql, myConn)
Dset2 = New DataSet
MyCommand.Fill(Dset2, "phone")
dgsave.DataSource = Dset2.Tables("phone").DefaultView
dgsave.DataBind()
End Sub
'绑定DataGrid
Private Sub dgsave_BindDataGrid()
Dim ls_dept As String
Dim ls_sql As String
Dim Dset2 As DataSet
Dim MyCommand As SqlDataAdapter
ls_dept = ""
ls_sql = ls_sql & "SELECT * FROM PUB_TELPHONE WHERE DEPT = '" & ls_dept & "' "
MyCommand = New SqlDataAdapter(ls_sql, myConn)
Dset2 = New DataSet
MyCommand.Fill(Dset2, "phone")
dgsave.DataSource = Dset2.Tables("phone").DefaultView
Dim phoneTable As DataTable = Dset2.Tables("phone")
Dim phoneView As DataView = phoneTable.DefaultView
phoneView.AllowDelete = False
Dim AddRow As DataRowView = phoneView.AddNew()
AddRow("user_name") = "大山"
AddRow("user_account") = ""
AddRow("dept") = ""
AddRow("telphone") = ""
AddRow("fax") = ""
AddRow("mobile") = ""
dgsave.EditItemIndex = 0
dgsave.DataBind()
End Sub
'点击编辑后更新的代码
Private Sub dgsave_UpdateCommand(ByVal sender As System.Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles dgsave.UpdateCommand
Dim ls_username, ls_account, ls_mobile, ls_telphone, ls_fax, ls_dept As String
Dim StrSql As String
Dim tb As TextBox
tb = CType(e.Item.Cells(0).Controls(0), TextBox)
ls_username = tb.Text
tb = CType(e.Item.Cells(1).Controls(0), TextBox)
ls_account = tb.Text
tb = CType(e.Item.Cells(2).Controls(0), TextBox)
ls_dept = tb.Text
tb = CType(e.Item.Cells(3).Controls(0), TextBox)
ls_fax = tb.Text
tb = CType(e.Item.Cells(4).Controls(0), TextBox)
ls_telphone = tb.Text
tb = CType(e.Item.Cells(5).Controls(0), TextBox)
ls_mobile = tb.Text
'StrSql = StrSql & "update pub_telphone set user_name = '" & ls_username & "', user_account = '" & ls_account & "' , dept = '" & ls_dept & "', "
'StrSql = StrSql & " mobile = '" & ls_mobile & "', telphone = '" & ls_telphone & "' , fax = '" & ls_fax & "'"
'StrSql = StrSql & " where user_name = '" & ls_username & "'"
'插入的Sql语句
StrSql = StrSql & "Insert into pub_telphone (user_name , user_account , dept , telphone , fax , mobile ) values ('" & ls_username & "','" & ls_account & "', '" & ls_dept & "', '" & ls_fax & "', '" & ls_telphone & "' , '" & ls_mobile & "' )"
ExecuteSql(StrSql)
dgsave_BindDataGrid()
'将项切换出编辑模式dgsave.EditItemIndex = -1
End Sub
'编辑按钮的代码
Private Sub dgsave_EditCommand(ByVal sender As System.Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles dgsave.EditCommand
dgsave.EditItemIndex = e.Item.ItemIndex
BindData2()
End Sub
'页面改变时执行的代码
Private Sub dgsave_PageIndexChanged(ByVal source As System.Object, ByVal e As System.Web.UI.WebControls.DataGridPageChangedEventArgs) Handles dgsave.PageIndexChanged
dgsave.CurrentPageIndex = e.NewPageIndex
BindData2()
End Sub
'删除的代码
Private Sub dgsave_DeleteCommand(ByVal sender As System.Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles dgsave.DeleteCommand
If (dgsave.Items.Count = 1) Then
If (dgsave.CurrentPageIndex <> 0) Then
dgsave.CurrentPageIndex = dgsave.CurrentPageIndex - 1
End If
End If
Dim strsql = "delete from pub_telphone where user_name = ' " & e.Item.Cells(0).Text & " ' "
ExecuteSql(strsql)
BindData2()
End Sub
'取消
Private Sub dgsave_CancelCommand(ByVal source As System.Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles dgsave.CancelCommand
dgsave.EditItemIndex = -1
BindData2()
End Sub
Private Sub InitializeComponent()
End Sub
'更新的代码
Private Sub dgSFDetail_UpdateCommand(ByVal source As System.Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles dgSFDetail.UpdateCommand
Dim ls_username, ls_account, ls_mobile, ls_telphone, ls_fax, ls_dept As String
Dim tb As TextBox
Dim StrSql As String
tb = CType(e.Item.Cells(0).Controls(0), TextBox)
ls_username = tb.Text
tb = CType(e.Item.Cells(1).Controls(0), TextBox)
ls_account = tb.Text
tb = CType(e.Item.Cells(2).Controls(0), TextBox)
ls_dept = tb.Text
tb = CType(e.Item.Cells(3).Controls(0), TextBox)
ls_fax = tb.Text
tb = CType(e.Item.Cells(4).Controls(0), TextBox)
ls_telphone = tb.Text
tb = CType(e.Item.Cells(5).Controls(0), TextBox)
ls_mobile = tb.Text
StrSql = StrSql & "update pub_telphone set user_name = '" & ls_username & "', user_account = '" & ls_account & "' , dept = '" & ls_dept & "', "
StrSql = StrSql & " mobile = '" & ls_mobile & "', telphone = '" & ls_telphone & "' , fax = '" & ls_fax & "'"
StrSql = StrSql & " where user_name = '" & ls_username & "'"
ExecuteSql(StrSql)
dgSFDetail.EditItemIndex = -1
BindData()
'将项切换出编辑模式dgsave.EditItemIndex = -1
End Sub
'删除按钮的代码
Private Sub dgSFDetail_DeleteCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles dgSFDetail.DeleteCommand
' Add code to delete data from data source.
Dim StrSql As String
If (dgSFDetail.Items.Count = 1) Then
If (dgSFDetail.CurrentPageIndex <> 0) Then
dgSFDetail.CurrentPageIndex = dgSFDetail.CurrentPageIndex - 1
End If
End If
'Dim myDeleteButton As Button
'myDeleteButton = CType(e.Item.FindControl("Delete"), Button)
'myDeleteButton.Text = "删除此行"
'myDeleteButton.Attributes.Add("onclick", "return confirm('您真的要删除第 " + e.Item.ItemIndex.ToString() + " 行吗?');")
StrSql = StrSql & "delete from pub_telphone where user_name = '" & e.Item.Cells(0).Text & " ' "
ExecuteSql(StrSql)
BindData()
End Sub
'编辑的代码
Private Sub dgSFDetail_EditCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles dgSFDetail.EditCommand
dgSFDetail.EditItemIndex = e.Item.ItemIndex
BindData()
End Sub
'取消的代码
Private Sub dgSFDetail_CancelCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles dgSFDetail.CancelCommand
dgSFDetail.EditItemIndex = -1
BindData()
End Sub
'保存代码
'Private Sub dgSFDetail_ItemCreated(ByVal sender As System.Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs)
' e.Item.Attributes.Add("onmouseout", "this.style.backgroundColor=currentcolor;this.style.cursor='default';")
' e.Item.Attributes.Add("onmouseover", "currentcolor=this.style.backgroundColor;this.style.backgroundColor='#FFFFCC';this.style.cursor='hand';")
'End Sub
'Private Sub dgSFDetail_ItemDataBound(ByVal source As System.Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs)
' e.Item.BackColor = Color.Blue
'End Sub
End Class