为DataGrid添加CheckBox控件
http://lucky_elove.www1.dotnetplayground.com/
CheckBoxDataGrid.aspx
<xmp><%@ Page Language="vb" AutoEventWireup="false" Codebehind="CheckBoxDataGrid.aspx.vb" Inherits="aspxWeb.CheckBoxDataGrid" %> <html> <head> 为DataGrid添加CheckBox控件的例子 <meta name="GENERATOR" content="Microsoft Visual Studio.NET 7.0"> <meta name="CODE_LANGUAGE" content="Visual Basic 7.0"> <meta name="vs_defaultClientScript" content="JavaScript"> <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5"> </head> <body ms_positioning="GridLayout"> <asp:datagrid autogeneratecolumns="False" id="dgMain" width="98%" runat="server"> <selecteditemstyle font-size="9pt" font-names="宋体"></selecteditemstyle> <edititemstyle font-size="9pt" font-bold="True" backcolor="Info" forecolor="Red" font-names="宋体"> </edititemstyle><alternatingitemstyle font-size="9pt" backcolor="White" forecolor="ControlText" font-names="宋体"> </alternatingitemstyle><itemstyle font-size="9pt" backcolor="WhiteSmoke" forecolor="ControlText" font-names="宋体"> <headerstyle horizontalalign="Center" verticalalign="Middle" font-bold="True" backcolor="Control" forecolor="Black"> </headerstyle> <columns> <asp:templatecolumn headertext="操作"> <headerstyle horizontalalign="Center" width="50px"></headerstyle> <itemtemplate> <asp:checkbox id="chkExport" runat="server"> </asp:checkbox></itemtemplate> <edititemtemplate> <asp:checkbox enabled="true" id="chkExportON" runat="server"> </asp:checkbox></edititemtemplate> </asp:templatecolumn> <asp:boundcolumn readonly="True" headertext="序号" datafield="id"> <headerstyle width="50px"></headerstyle> </asp:boundcolumn> <asp:templatecolumn sortexpression="demo" headertext="标题"> <itemtemplate> <asp:label text="<%# Server.HTMLEncode(DataBinder.Eval(Container.DataItem, " title"))%="">" id="lblColumn" width="80%" runat="server"> </asp:label></itemtemplate> </asp:templatecolumn> </columns> </itemstyle></asp:datagrid> <asp:button text="全部选中" id="cmdSelectAll" runat="server"></asp:button> <asp:button text="查看选中的项目" id="cmdFindSelected" runat="server"></asp:button><asp:label id="Label1" runat="server"></asp:label> </body> </html> </xmp>
后代码 CheckBoxDataGrid.aspx.vb
<xmp>Imports System.Data Imports System.Data.OleDb Public Class CheckBoxDataGrid Inherits System.Web.UI.Page Protected WithEvents cmdSelectAll As System.Web.UI.WebControls.Button Protected WithEvents dgMain As System.Web.UI.WebControls.DataGrid Protected WithEvents cmdFindSelected As System.Web.UI.WebControls.Button Dim oDataView As DataView Protected WithEvents Label1 As System.Web.UI.WebControls.Label Dim sConnectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="_ + Server.MapPath("Test.mdb") #Region " Web Form Designer Generated Code " 'This call is required by the Web Form Designer. <system.diagnostics.debuggerstepthrough()> Private Sub InitializeComponent() End Sub Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs)_ Handles MyBase.Init 'CODEGEN: This method call is required by the Web Form Designer 'Do not modify it using the code editor. InitializeComponent() End Sub #End Region Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)_ Handles MyBase.Load 'Put user code to initialize the page here dgMain.Columns(0).HeaderText = "选项" dgMain.Columns(1).HeaderText = "序号" dgMain.Columns(2).HeaderText = "标题" cmdFindSelected.Text = "查看选中的项目" RefreshGrid() If Not Page.IsPostBack Then cmdSelectAll.Text = "全部选中" dgMain.DataBind() End If End Sub #Region "处理多选" Private Sub cmdSelectAll_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)_ Handles cmdSelectAll.Click selectAll() End Sub Private Sub selectAll() Dim oDataGridItem As DataGridItem Dim chkExport As System.Web.UI.WebControls.CheckBox If cmdSelectAll.Text = "全部选中" Then For Each oDataGridItem In dgMain.Items chkExport = oDataGridItem.FindControl("chkExport") chkExport.Checked = True Next cmdSelectAll.Text = "全部不选" Else For Each oDataGridItem In dgMain.Items chkExport = oDataGridItem.FindControl("chkExport") chkExport.Checked = False Next cmdSelectAll.Text = "全部选中" End If End Sub #End Region #Region "更新DataGrid" Private Sub RefreshGrid() Dim oConnection As OleDbConnection Dim oCommand As OleDbDataAdapter Dim oDataSet As New DataSet() Try Dim sSQL As String = "Select top 5 * from TestTable order by id" oConnection = New OleDbConnection(sConnectionString) oCommand = New OleDbDataAdapter(sSQL.ToString, oConnection) oCommand.Fill(oDataSet, "TestTable") oDataView = New DataView(oDataSet.Tables("TestTable")) dgMain.DataSource = oDataView oConnection.Close() Catch ex As Exception '// Place Error Handling here End Try End Sub #End Region Private Sub cmdFindSelected_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)_ Handles cmdFindSelected.Click Dim oDataGridItem As DataGridItem Dim chkExport As System.Web.UI.WebControls.CheckBox Dim oExArgs As New System.Collections.ArrayList() Dim sID As String Label1.Text = "" For Each oDataGridItem In dgMain.Items chkExport = oDataGridItem.FindControl("chkExport") If chkExport.Checked Then Label1.Text = "" sID = CType(oDataGridItem.FindControl("lblColumn"), Label).Text oExArgs.Add(sID) Dim i As Integer = 0 For i = 0 To oExArgs.Count - 1 Label1.Text += oExArgs(i) + "," Next End If Next End Sub End Class </xmp>