在www.csdn.net呆长了,经常看见有网友提问关于一些模板列的使用或分页.在此.我将我的一些心得写出来供大家参考(声明:我只是一个爱好者,如果写的有不对或有错的地方请原谅,当然我会尽量写好)
在datagrid控件中我们中选择文章是否推荐,如果该文章推荐,我们就选将checkbox控件上打上勾(就比如本站一些文章的'精'字图像)
在页面上增加一个datagrid控件并增加个模板列(当然你要在模板列中要有checkbox控件,并在模板列顶部放置一个button按钮,设置该按钮的commandname的命令为jing(注意是在编辑模板列Headertemplate放按钮,Itemtempaate放checkbox)好了之后我们就是在页面加载时绑定数据,当然是使用dataset来绑定数据了.


Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        '在此处放置初始化页的用户代码
        If Not IsPostBack Then
       Dim ds As DataSet = New DataSet()
            Dim sqlsele As String = "select * from life"
            adocmd = New OleDbDataAdapter(sqlsele, sqlprov)
            adocmd.Fill(ds, "life")
            DataGrid1.DataSource = ds.Tables.Item(0)
            DataGrid1.DataBind()
            ''''是否为精
            viewstate("tol") = "false"
            chkfind()'''''这里调用函数.主要这是这句
        End If
    End Sub 

下面是chkfind()函数的代码,主要是用来检查是否为精(我表中有一字段,jing,整型,如果为1就代表该文章为精,如果不为0就不代表为精了)
Private Sub chkfind()
        Dim i, j As Integer
        For i = 0 To DataGrid1.Items.Count - 1
 'i是用来显示当前总页总共有几行数据.这样就可以循环查找.判定
' j 是用来显示该行的数据在表中是第几行数据,
            j = (DataGrid1.CurrentPageIndex * 10) + i
            Dim ds As DataSet = New DataSet()
            Dim sqlsele As String
            If viewstate("tol") = "false" Then
                sqlsele = "select * from life"
            Else
                sqlsele = "select * from life where lifetitle='" & TextBox1.Text & "'"
            End If
            adocmd = New OleDbDataAdapter(sqlsele, sqlprov)
            adocmd.Fill(ds, "life")
            mytable = ds.Tables.Item(0)
            myrow = mytable.Rows.Item(j)
            Dim chk As CheckBox
            chk = DataGrid1.Items(i).Cells(6).FindControl("checkbox1")
            If myrow.Item(8) = 1 Then
                chk.Checked = True'显示模板列的checkbox是否打上勾
            Else
                chk.Checked = False
            End If
        Next
    End Sub 

下面是datagrid的翻页代码及datagrid事件代码.当然每次翻页后都要重新绑定代码
 Private Sub DataGrid1_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.ItemCommand
If e.CommandName = "jing" Then'如果按了button按钮,就是我上面所讲的button按钮,如果还不明白请到上面看看
            Dim i, j As Integer
            For i = 0 To DataGrid1.Items.Count - 1
                j = (DataGrid1.CurrentPageIndex * 10) + i
                Dim chk As CheckBox
                chk = DataGrid1.Items(i).Cells(6).FindControl("checkbox1")
                Dim ds As DataSet = New DataSet()
                adocmd = New OleDbDataAdapter(sqlsele, sqlprov)
                adocmd.Fill(ds, "life")
                mytable = ds.Tables.Item(0)
                myrow = mytable.Rows.Item(j)
                mytable.GetChanges()
                If chk.Checked = True Then'如果为精,更改图像
                    myrow.Item(8) = 1
                    myrow.Item(9) = "icon/jing.gif"
                Else
                    myrow.Item(8) = 0
                    myrow.Item(9) = "icon/333.gif"
                End If
                cmd = New OleDbCommandBuilder(adocmd)
                adocmd.Update(ds, "life")'更新数据
            Next
            Response.Redirect("adminlife.aspx")
        End If
    End Sub 

Private Sub DataGrid1_PageIndexChanged(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridPageChangedEventArgs) Handles DataGrid1.PageIndexChanged
        Dim ds As DataSet = New DataSet()
        Dim sqlsele As String
        If viewstate("tol") = "false" Then
            sqlsele = "select * from life "
        Else
            sqlsele = "select * from life where lifetitle like '%" & TextBox1.Text & "%'"
        End If
        adocmd = New OleDbDataAdapter(sqlsele, sqlprov)
        adocmd.Fill(ds, "life")
        DataGrid1.CurrentPageIndex = e.NewPageIndex
        DataGrid1.DataSource = ds.Tables.Item(0).DefaultView
        DataGrid1.DataBind()
        chkfind()
    End Sub 

至此,我们已经完成了我们所想要功能.在此基础上大家都可以扩展相应的功能,谢谢看完!以上代码都已经通过调试有用的(就是本站使用的代码)
版权所有.未经本人许可.请勿转载.如需转载,请注明来源也算是对本站的支持.谢谢