为DataGrid添加CheckBox控件[转孟子E章]
CheckBoxDataGrid.aspx
<%@ Page language="c#" enableViewState = "true" Codebehind="DataGridCheckBox.aspx.cs"
AutoEventWireup="false" Inherits="eMeng.Exam.DataGridCheckBox.DataGridCheckBox" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<title>为DataGrid添加CheckBox控件的例子</title>
</HEAD>
<body>
<form id="frmMain" method="post" runat="server">
<asp:DataGrid id="dgMain" runat="server" Width="98%" AutoGenerateColumns="False" Font-Size="9pt" Font-Names="宋体">
<AlternatingItemStyle ForeColor="ControlText" BackColor="White" />
<ItemStyle ForeColor="ControlText" BackColor="WhiteSmoke" />
<HeaderStyle Font-Bold="True" HorizontalAlign="Center" ForeColor="Black" VerticalAlign="Middle"
BackColor="Control"></HeaderStyle>
<Columns>
<asp:TemplateColumn HeaderText="操作">
<HeaderStyle HorizontalAlign="Center" Width="50px"></HeaderStyle>
<ItemTemplate>
<input type="hidden" id="SelectedID" runat="server"
value='<%# DataBinder.Eval(Container.DataItem, "id")%>'/>
<asp:CheckBox ID="chkExport" Runat="server" />
</ItemTemplate>
</asp:TemplateColumn>
<asp:BoundColumn DataField="id" ReadOnly="True" HeaderText="序号">
<HeaderStyle Width="50px"></HeaderStyle>
</asp:BoundColumn>
<asp:TemplateColumn SortExpression="demo" HeaderText="标题">
<ItemTemplate>
<asp:Label Text='<%# Server.HtmlEncode((string)DataBinder.Eval(Container.DataItem, "Title"))%>'
runat="server" Width="80%" ID="lblColumn" />
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
<asp:Button id="cmdSelectAll" runat="server" Text="全部选中"></asp:Button>
<asp:Button id="cmdFindSelected" runat="server" Text="查看选中的项目"></asp:Button>
<br>
<asp:Label id="Label1" runat="server"></asp:Label>
<hr>
<asp:Label id="Label2" runat="server"></asp:Label>
</form>
</body>
</HTML>

DataGridCheckBox.aspx.cs
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.OleDb;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace eMeng.Exam.DataGridCheckBox
{
/// <summary>
/// DataGridCheckBox 的摘要说明。
/// 【孟宪会之精彩世界】
/// </summary>
public class DataGridCheckBox : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Button cmdSelectAll;
protected System.Web.UI.WebControls.Button cmdFindSelected;
protected System.Web.UI.WebControls.DataGrid dgMain;
protected System.Web.UI.WebControls.Label Label1;
protected System.Web.UI.WebControls.Label Label2;
DataView oDataView;
string sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
+ HttpContext.Current.Server.MapPath("../../aspxWeb.mdb.ascx");
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
dgMain.Columns[0].HeaderText = "选项";
dgMain.Columns[1].HeaderText = "序号";
dgMain.Columns[2].HeaderText = "标题";
cmdFindSelected.Text = "查看选中的项目";
RefreshGrid();
if( !this.IsPostBack)
{
cmdSelectAll.Text = "全部选中";
dgMain.DataBind();
}
}
#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.cmdSelectAll.Click += new System.EventHandler(this.cmdSelectAll_Click);
this.cmdFindSelected.Click += new System.EventHandler(this.cmdFindSelected_Click);
this.Load += new System.EventHandler(this.Page_Load);

}
#endregion

private void cmdSelectAll_Click(object sender, System.EventArgs e)
{
selectAll();
}

private void selectAll()
{
System.Web.UI.WebControls.CheckBox chkExport ;
if( cmdSelectAll.Text == "全部选中")
{
foreach(DataGridItem oDataGridItem in dgMain.Items)
{
chkExport = (CheckBox)oDataGridItem.FindControl("chkExport");
chkExport.Checked = true;
}
cmdSelectAll.Text = "全部不选";
}
else
{
foreach(DataGridItem oDataGridItem in dgMain.Items)
{
chkExport = (CheckBox)oDataGridItem.FindControl("chkExport");
chkExport.Checked = false;
}
cmdSelectAll.Text = "全部选中";
}
}

private void RefreshGrid()
{
OleDbConnection oConnection;
OleDbDataAdapter oCommand ;
DataSet oDataSet = new DataSet();
try
{
string sSQL = "Select top 10 * from Document order by CreateDate DESC";
oConnection = new OleDbConnection(sConnectionString);
oCommand = new OleDbDataAdapter(sSQL.ToString(), oConnection);
oCommand.Fill(oDataSet, "Document");
oDataView = new DataView(oDataSet.Tables["Document"]);
dgMain.DataSource = oDataView;
oConnection.Close();
}
catch(Exception ex)
{
Label1.Text = ex.Message.ToString();
}
}

private void cmdFindSelected_Click(object sender, System.EventArgs e)
{
System.Web.UI.WebControls.CheckBox chkExport;
System.Collections.ArrayList oExArgs = new System.Collections.ArrayList();
string sID;
Label1.Text = "";
Label2.Text = "";
foreach(DataGridItem oDataGridItem in dgMain.Items)
{
chkExport = (CheckBox)oDataGridItem.FindControl("chkExport");
if( chkExport.Checked)
{
//如果要进行删除,可以在这里构造sql语句进行删除
string sql = "DELETE FROM Document WHERE id ="
+ ((HtmlInputHidden)oDataGridItem.FindControl("SelectedID")).Value;
Label2.Text += "<li>" + sql;
sID = ((HtmlInputHidden)oDataGridItem.FindControl("SelectedID")).Value;
oExArgs.Add(sID);
int i = 0;
Label1.Text = "";
for( i = 0;i<oExArgs.Count;i++)
{
Label1.Text += oExArgs[i] + "<br>";
}
}
}
Label2.Text += "<br><font color=red>执行SQL语句即可删除,这里省略。</font>";
}
}
}


效果:
http://dotnet.aspx.cc/Exam/DataGridCheckBox/DataGridCheckBox.aspx
































































































































































































效果:
http://dotnet.aspx.cc/Exam/DataGridCheckBox/DataGridCheckBox.aspx