前台:
<%@ Page language="c#" 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" PageSize="5" AllowPaging="True" Width="98%" AutoGenerateColumns="False"
Font-Size="9pt" Font-Names="宋体" DataKeyField="au_id">
<AlternatingItemStyle ForeColor="ControlText" BackColor="White"></AlternatingItemStyle>
<ItemStyle ForeColor="ControlText" BackColor="WhiteSmoke"></ItemStyle>
<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 id=SelectedID type=hidden value='<%# Server.HtmlEncode((string)DataBinder.Eval(Container.DataItem, "au_id"))%>' name=SelectedID runat="server">
<asp:CheckBox id="chkExport" Runat="server"></asp:CheckBox>
</ItemTemplate>
</asp:TemplateColumn>
<asp:BoundColumn DataField="au_id" ReadOnly="True" HeaderText="序号">
<HeaderStyle Width="50px"></HeaderStyle>
</asp:BoundColumn>
<asp:TemplateColumn SortExpression="demo" HeaderText="标题">
<ItemTemplate>
<asp:Label id=lblColumn runat="server" Width="80%" Text='<%# Server.HtmlEncode((string)DataBinder.Eval(Container.DataItem, "au_lname"))%>'>
</asp:Label>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
<PagerStyle NextPageText="上一页" PrevPageText="下一页"></PagerStyle>
</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>
后台:using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Configuration;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 = "查看选中的项目";

if(!this.IsPostBack)
{
cmdSelectAll.Text = "全部选中";
RefreshGrid();
}
}
#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.dgMain.PageIndexChanged += new System.Web.UI.WebControls.DataGridPageChangedEventHandler(this.dgMain_PageIndexChanged);
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()
{
SqlDataAdapter sqlda ;
DataSet ds = new DataSet();
try
{
string sSQL = "Select * from authors";
SqlConnection sqlcon = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString1"]);
sqlda = new SqlDataAdapter(sSQL.ToString(),sqlcon);
sqlda.Fill(ds, "authors");
oDataView = new DataView(ds.Tables["authors"]);
dgMain.DataSource = oDataView;
sqlcon.Close();
}
catch(Exception ex)
{
Label1.Text = ex.Message.ToString();
}
dgMain.DataBind();
} private void cmdFindSelected_Click(object sender, System.EventArgs e)
{
System.Web.UI.WebControls.CheckBox chkExport;
System.Collections.ArrayList oExArgs = new System.Collections.ArrayList();
Label1.Text = "";
Label2.Text = "";
foreach(DataGridItem oDataGridItem in dgMain.Items)
{
chkExport = (CheckBox)oDataGridItem.FindControl("chkExport");
if(chkExport.Checked)
{
//如果要进行删除,可以在这里构造sql语句进行删除
string sql = "DELETE FROM authors WHERE au_id =" 
+ ((HtmlInputHidden)oDataGridItem.FindControl("SelectedID")).Value;
SqlConnection sqlcon=new SqlConnection(ConfigurationSettings.AppSettings["connectionString1"]);
SqlCommand cmd=new SqlCommand(sql,sqlcon);
sqlcon.Open();
try
{
cmd.ExecuteNonQuery();
}
catch(Exception ex)
{
Response.Write(ex.ToString());
}
sqlcon.Close();
}
}
RefreshGrid();
}
private void dgMain_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
dgMain.CurrentPageIndex=e.NewPageIndex;
RefreshGrid();
}
}
}

解决方案 »

  1.   

    不好意思,代码有点乱,我的问题是,页面中有个“lblColumn”,我想在点“删除选中项目”后,获得“lblColumn“的值,该如何解决呢?请指点,谢谢!
      

  2.   

    好象在gridview中设一个主键字段。具体名字忘了。
      

  3.   

    简单点的话,就直接使用checkbox,名字一样,值为ID。
    执行删除的时候,直接Request.From[checkbox名字],就是你所选择的了。
      

  4.   

    我的意思是说,上面写的有一个Label id=lblColumn,已经绑定了数据库中的au_lname字段,我现在是想要获得au_lname对应的具体数据,应该如何获得?
    谢谢楼上2位!
      

  5.   

    ((Label)oDataGridItem.FindControl("lblColumn")).Text
      

  6.   

    ((Label)oDataGridItem.FindControl("lblColumn")).Text