|
2#
楼主 |
发表于 2006-8-14 09:16:00
|
只看该作者
【DateGrid的分页】
昨天我们在datagrid1里设置了分页,并且设置了上一条,下一条的按钮,如果数据库里的数据超过5条,这两个按钮就会出现,为此我们先手工给数据里添加条目,令其超过5条,或者把每页条目减少一点就可以看到这两个按钮 ,但是点击了没有反应?那是我们还没有写代码:到vb视图,调出翻页命令:PageIndexChanged
'翻页的事件过程
Private Sub DataGrid1_PageIndexChanged(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridPageChangedEventArgs) Handles DataGrid1.PageIndexChanged
DataGrid1.CurrentPageIndex = e.NewPageIndex
BindGrid() '立即刷新
End Sub
【DateGrid的编辑】
datagrid的其实分成几种状态:普通状态,被选中状态,被编辑状态,它的EditItemIndex属性表示是否编辑,-1表示非编辑,数字则表示被编辑的行:当进入编辑状态时会有更新和返回两个按钮,这是我们用属性生成器的结果,对于自定义来说,不会出现这两个按钮的。
'切换到更新状态
Private Sub OnEditCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.EditCommand
DataGrid1.EditItemIndex = e.Item.ItemIndex
BindGrid()
End Sub
添加了这行代码以后,点击编辑按钮,本行就会进入编辑状态了,
这是取消按钮事件:
'取消事件过程
Private Sub DataGrid1_CancelCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.CancelCommand
DataGrid1.EditItemIndex = -1
BindGrid()
End Sub
我们使用更新查询来更新我们所做的修改:这是ado.net所要求的,(用ado可以不用这样写)
'更新事件过程
Private Sub DataGrid1_UpdateCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.UpdateCommand
Dim mysql As String
Dim mycmd As OleDb.OleDbCommand
Dim id As Integer = e.Item.Cells(0).Text '获取激活行的第一单元格的文本
Dim Txt As String = CType(e.Item.Cells(1).Controls(0), TextBox).Text.ToString '将单元格转换为textbox控件,再获取他的文本
mysql = "UPDATE tab_pkinds SET tab_pkinds.pkinds = '" + Txt + "' WHERE id=" & id
Response.Write(Txt)
mycon.Open()
mycmd = New OleDb.OleDbCommand(mysql, mycon)
mycmd.ExecuteNonQuery()
mycon.Close()
DataGrid1.EditItemIndex = -1
BindGrid()
End Sub
删除按钮的事件编写当然比较简单,一个删除查询就搞掂它,可是运行以后你会发现,如果他是这一页的最后一条记录,删除后会出错的。所以在重新加载数据前我们要定义显示在那一页:
'删除按钮的过程
Private Sub OnDeleteCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.DeleteCommand
Dim mysql As String
Dim mycmd As OleDb.OleDbCommand
Dim id As Integer = e.Item.Cells(0).Text
mysql = "DELETE FROM tab_Pkinds WHERE id=" & id
mycon.Open()
mycmd = New OleDb.OleDbCommand(mysql, mycon)
mycmd.ExecuteNonQuery()
mycon.Close()
Dim lastpage As Integer '页面数
lastpage = DataGrid1.CurrentPageIndex
'判断是否为当前页面的最后一条记录
If (DataGrid1.PageCount - DataGrid1.CurrentPageIndex = 1) And (DataGrid1.Items.Count = 1) Then
'判断是否存在上一页页面
If DataGrid1.PageCount > 1 Then
lastpage = lastpage - 1
Else
lastpage = 0
End If
End If
DataGrid1.CurrentPageIndex = lastpage
BindGrid() '立即刷新
End Sub
【DateGrid的添加】
你可以让datagrid添加一行出来,不过在这里我没有那么做,我在页面下方添加了一个文本框和一个按钮,其实就是像数据表添加一条记录,在重新加载datagrid就是了,对吧?
'添加一条记录
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim mysql As String
Dim mycmd As OleDb.OleDbCommand
If TextBox1.Text <> "" Then<BR |
|