.NET开发

本类阅读TOP10

·NHibernate快速指南(翻译)
·vs.net 2005中文版下载地址收藏
·【小技巧】一个判断session是否过期的小技巧
·VB/ASP 调用 SQL Server 的存储过程
·?dos下编译.net程序找不到csc.exe文件
·通过Web Services上传和下载文件
·学习笔记(补)《.NET框架程序设计(修订版)》--目录
·VB.NET实现DirectDraw9 (2) 动画
·VB.NET实现DirectDraw9 (1) 托管的DDraw
·建站框架规范书之——文件命名

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
利用Session纪录datagrid模板列中CheckBox的状态

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

    

DataGrid 的模板列中加入CheckBox ,如果对DataGrid设置分页,前一页已经选中的CheckBox在回到原页时,CheckBox的状态会变为初始状态。

       如果想保存checkbox的状态,则可以用Session保存,我是这样实现的:

      1、首先,建立DataGrid.

         <asp:datagrid id="DataGrid1" style="Z-INDEX: 101; LEFT: 12px; POSITION: absolute; TOP: 88px" runat="server" AllowPaging="True" Width="416px" Height="248px">

                   <AlternatingItemStyle BackColor="#EEEEEE"></AlternatingItemStyle>

                   <ItemStyle Font-Size="12px" Font-Names="宋体"></ItemStyle>

                   <HeaderStyle Font-Size="12px" Font-Names="宋体" BackColor="#00CCFF"></HeaderStyle>

                   <FooterStyle HorizontalAlign="Center"></FooterStyle>

                   <Columns>

                        <asp:TemplateColumn>

                            <ItemTemplate>

                                 <asp:checkbox id="CheckBox1" runat="server"></asp:checkbox>

                            </ItemTemplate>

                        </asp:TemplateColumn>

                   </Columns>

              </asp:datagrid>

 

             2、在Global.asax文件中,Session_Start事件中建立Session

Sub Session_Start(ByVal sender As Object, ByVal e As EventArgs)
                ' 在会话启动时激发
            Dim checks As Boolean() = New Boolean(10000) {}
            Dim i As Integer
            For i = 0 To 10000
                checks(i) = False
            Next
           Session.Add("CheckBoxchecks", checks)
        End Sub

3.在DataGrid的PageIndexChanged事件中:

 Private Sub DataGrid1_PageIndexChanged(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridPageChangedEventArgs) Handles DataGrid1.PageIndexChanged

        Dim count As Integer

        Dim cnn As OleDb.OleDbConnection = New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\UserLog.mdb")

        Dim da As New OleDb.OleDbDataAdapter("select * from mm", cnn)

 

        da.Fill(dst)

 

        count = dst.Tables(0).Rows.Count   'DataGrid中的记录总数;

        Dim check As Boolean()

        check = Me.Session("checkboxchecks")  'check()是记录checkbox状态的数组,用session保存。

                   Dim j As Integer

            For j = 0 To DataGrid1.PageSize - 1

                Dim Che As CheckBox = DataGrid1.Items(j).Cells(0).FindControl("CheckBox1")

                If Not Che Is Nothing Then

                    If Che.Checked = True Then

                        check(DataGrid1.CurrentPageIndex * DataGrid1.PageSize + j) = True

                    Else

                        check(DataGrid1.CurrentPageIndex * DataGrid1.PageSize + j) = False

                    End If

                End If

            Next

        DataGrid1.CurrentPageIndex = e.NewPageIndex

        Dim ds As New DataSet()

        da.Fill(ds, "a")

        DataGrid1.DataSource = ds

        DataGrid1.DataBind()

            Dim i As Integer

            For i = 0 To DataGrid1.PageSize - 1

                Dim Cx2 As CheckBox = DataGrid1.Items(i).Cells(0).FindControl("CheckBox1")

                If check(DataGrid1.CurrentPageIndex * DataGrid1.PageSize + i) = True Then

                    Cx2.Checked = True

                Else

                    Cx2.Checked = False

                End If

            Next

         

         End Sub

          这样就可以利用Session实现checkbox翻页后的状态保存问题.




相关文章

相关软件