private void Form1_Load(object sender, System.EventArgs e)
{
DataTable dt = new DataTable();
DataColumn dc1= new DataColumn("dc1");
dc1.DataType = System.Type.GetType("System.Boolean");
dt.Columns.Add(dc1);
DataRow dr= dt.NewRow();
dr["dc1"]=true;
dataGrid1.DataSource = dt;
}private void button1_Click(object sender, System.EventArgs e)
{
MessageBox.Show(dataGrid1[0,0].ToString());
}
dataGrid1.CurrentCell.RowNumber
dataGrid1.CurrentIndex
public class MyDataGridBoolColumn:DataGridBoolColumn
{
private bool m_bInEdit;
//private int m_intOldValue;
private int m_xMargin = 2;
private int m_yMargin = 1;
private CheckBox m_cb;
//private DataGrid selfdg; public MyDataGridBoolColumn(DataGrid dg)
{
m_cb=new CheckBox();
m_cb.Visible = false;
m_cb.CheckedChanged +=new System.EventHandler(this.MYCheck);
dg.Controls.Add(m_cb);
//selfdg = dg; }
.
.
.
public delegate void MyEvent(object sender, System.EventArgs e, CheckBox ACheckBox);
public event MyEvent DGCheckChange;
private void MYCheck(object sender, System.EventArgs e)
{
if(DGCheckChange!=null)
{
DGCheckChange(this.m_cb,new System.EventArgs(),m_cb);
}
}
}
从实现的功能上讲,它类似于 DataGridBoolColumn,不过,你可以控制更多的属性(你可以公开更多内容。
<Columns>
<asp:TemplateColumn>
<HeaderStyle Width="10px"></HeaderStyle>
<HeaderTemplate>
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox id="chkselect" Runat="server"></asp:CheckBox>
</ItemTemplate>
</asp:TemplateColumn>
<Columns>判断是否被选中:bool isDeleted; //默认情况下为false;
string isDelNo="";
foreach(DataGridItem anItem in dgList.Items)
{
isDeleted=((CheckBox)anItem.FindControl("chkselect")).Checked; //判断是否被选中
if(isDeleted)
{
string lockno=anItem.Cells[1].Text;
//可以加入需要对此行进行操作的代码
}
}
using System.Collections;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
namespace DataGridControls
{
/// <summary>
/// CheckBoxColumn Derives from DataGrid Column
/// </summary>
public class CheckBoxColumn : DataGridColumn
{
public CheckBoxColumn(): base()
{
}
public override void InitializeCell(TableCell cell,
int columnIndex, ListItemType itemType)
{
//let the base class initialize the cell
base.InitializeCell(cell, columnIndex, itemType); //we don't want to add a checkbox to the header.
if( itemType == ListItemType.EditItem ||
itemType == ListItemType.Item ||
itemType == ListItemType.AlternatingItem ||
itemType == ListItemType.SelectedItem){ HtmlInputCheckBox checkbox = new HtmlInputCheckBox();
//assign an ID that we can use to find the control later
checkbox.ID = "checkboxCol";
cell.Controls.Add(checkbox);
}
}
public Int32[] SelectedIndexes
{
get
{
ArrayList selectedIndexList = new ArrayList();
//iterate each DataGridItem and find our checkbox
foreach( DataGridItem item in this.Owner.Items )
{
HtmlInputCheckBox chkBox =
(HtmlInputCheckBox) item.FindControl("checkboxCol");
//If it's selected then add it to our ArrayList
if ( chkBox != null && chkBox.Checked )
{
selectedIndexList.Add( item.ItemIndex );
}
}
return (Int32[])selectedIndexList.ToArray(typeof(
System.Int32 ) );
}
}
public object[] SelectedDataKeys
{
get
{
//Just iterate each of the selectedindexes and
//match it up to the datakey field
ArrayList dataKeyList = new ArrayList();
//make sure the datakeys have some values
if(this.Owner.DataKeys.Count > 0)
{
foreach( Int32 selectedIndex in SelectedIndexes )
{
object DataKey =
(this.Owner.DataKeys[selectedIndex].ToString());
dataKeyList.Add(DataKey);
}
}
return (object[])dataKeyList.ToArray(typeof( object ) );
}
}
}
}