首 页 | 新 闻 | 技术中心 | 第二书店 | 《程序员》 | 《开发高手》 | 社 区 | 黄 页 | 人 才
移 动专 题SUNIBM微 软微 创精 华Donews人 邮
我的技术中心 
我的分类 我的文档
全部文章 发表文章
专栏管理 使用说明



 RSS 订阅 
最新文档列表
Windows/.NET
.NET  (rss)    
Visual C++  (rss)    
Delphi  (rss)    
Visual Basic  (rss)    
ASP  (rss)    
JavaScript  (rss)    
Java/Linux
Java  (rss)    
Perl  (rss)    
综合
其他开发语言  (rss)    
文件格式  (rss)    
企业开发
游戏开发  (rss)    
网站制作技术  (rss)    
数据库
数据库开发  (rss)    
软件工程
其他  (rss)    

积极原创作者 
TechnoFantasy (52)
feifei1018 (19)
coofucoo (108)
qingrun (67)
btbtd (83)
longrujun (64)
cyz1980 (101)
ssll2826 (10)
EmilMatthew (73)
goodboy1881 (15)
CSDN - 文档中心 - .NET 阅读:7762   评论: 3    参与评论
标题   利用Session纪录datagrid模板列中CheckBox的状态     选择自 guoyan19811021 的 Blog
关键字   Datagrid CheckBox Session
出处  

    

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翻页后的状态保存问题.


相关文章
对该文的评论
CSDN 网友 ( 2006-03-03)
怎样 把数据库中的值,赋给dadagrid中的dropdownlist 和text 还有 radibatton
请指教!
CSDN 网友 ( 2005-09-28)
有没有C#版的啊,我不会VB
cuike519 ( 2003-09-29)
同样的方法也可以用ViewState实现!
这样可以减少消耗服务器资源(内存).但是增加了网络和客户端的负担!