在DataGrid里面使用CheckBox的例子

来源:互联网 发布:松江消防主机如何编程 编辑:程序博客网 时间:2024/04/28 05:33

在DataGrid使用CheckBox通常都使用客户端的控件,这样可以把值帮定到CheckBox里面,在服务器端通过string strID = Request["cbID"];获得客户端所选择的值。而且使用客户端控件的时候CheckBox的控件的id都不会被自动转变成别的ID,容易控制,方便做客户端校验。
本例子只是简单地说明了怎么帮定值到CheckBox上,和获得所选的值。

页面代码:
<%@ Page language="c#" Codebehind="CheckBoxTest.aspx.cs" AutoEventWireup="false" Inherits="WebTest.DataGridTest.CheckBoxTest" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
 <HEAD>
  <title>CheckBoxTest</title>
 </HEAD>
 <body>
  <form id="Form1" method="post" runat="server">
   <FONT face="宋体">
    <asp:DataGrid id="dtgView" runat="server" AutoGenerateColumns="False">
     <Columns>
      <asp:TemplateColumn HeaderText="id">
       <ItemTemplate>
        <INPUT type="checkbox" id=cbID name=cbID value='<%# DataBinder.Eval(Container, "DataItem.id") %>'>
       </ItemTemplate>
      </asp:TemplateColumn>
      <asp:BoundColumn DataField="val" HeaderText="val"></asp:BoundColumn>
     </Columns>
    </asp:DataGrid>
    <P>&nbsp;</P>
    <P>
   </FONT>
   <asp:Button id="btnGetResult" runat="server" Text="GetResult"></asp:Button></P>
  </form>
 </body>
</HTML>



CS代码:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
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 WebTest.DataGridTest
{
 /// <summary>
 /// CheckBoxTest 的摘要说明。
 /// </summary>
 public class CheckBoxTest : System.Web.UI.Page
 {
  protected System.Web.UI.WebControls.DataGrid dtgView;
  protected System.Web.UI.WebControls.Button btnGetResult;
 
  DataTable dt;
  private void Page_Load(object sender, System.EventArgs e)
  {
   if(!Page.IsPostBack)
   {
    //帮定数据源
    this.GetDT();
    this.dtgView.DataSource = dt;
    dtgView.DataBind();
   }
  }

  #region Web 窗体设计器生成的代码
  override protected void OnInit(EventArgs e)
  {
   //
   // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
   //
   InitializeComponent();
   base.OnInit(e);
  }
  
  /// <summary>
  /// 设计器支持所需的方法 - 不要使用代码编辑器修改
  /// 此方法的内容。
  /// </summary>
  private void InitializeComponent()
  {   
   this.btnGetResult.Click += new System.EventHandler(this.btnGetResult_Click);
   this.Load += new System.EventHandler(this.Page_Load);

  }
  #endregion

  //制造一个数据源
  private void GetDT()
  {
   dt = new DataTable();
   dt.Columns.Add("id", typeof(int));
   dt.Columns.Add("val", typeof(string));
   for(int i=0; i<=20; i++)
   {
    dt.Rows.Add(new object[]{i, "val_" + i.ToString()});
   }
  }

  private void btnGetResult_Click(object sender, System.EventArgs e)
  {
   //获得CheckBox的值
   string strID = Request["cbID"];
   string [] IDs = new string[0];
   //如果用户有选择CheckBox,就分解获得的字符串,得到用户选择的ID
   if(strID != null && strID.Length > 0)
   {
    IDs = strID.Split(new char[]{','});
   }
   //获得用户选择的ID的个数
   int i = IDs.Length;
   Response.Write(String.Format("一共有{0}个ID被选:<BR>", i));
   foreach (string ID in IDs)
   {
    Response.Write(ID);
    Response.Write("<BR>");
   }
  }
 }
}

原创粉丝点击