首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

向各位请问怎么在datagrid控件的头部加上CheckBox复选框

2012-01-13 
向各位请教如何在datagrid控件的头部加上CheckBox复选框我想在datagrid控件中加一个模板列,里面放CheckBox

向各位请教如何在datagrid控件的头部加上CheckBox复选框
我想在datagrid控件中加一个模板列,里面放CheckBox,又想做一个全选的复选框,放在datagrid的头部,点击全选就将控件中的所有复选框选中,向各位请教,能不能给出具体实现代码。

[解决办法]
easy

[解决办法]
public int id;
private void del()
{
CheckBox chk1=new CheckBox ();
for(int i=0;i <this.mygrid .Items .Count ;i++)
{

chk1=(CheckBox)this.mygrid .Items [i].Cells [0].FindControl ( "chkselect ");
if(chk1.Checked )
{
id=Convert.ToInt32 (this.mygrid .Items [i].Cells [1].Text .Trim ());
SqlConnection con=new SqlConnection (System.Configuration .ConfigurationSettings .AppSettings [ "con "]);
con.Open ();
SqlCommand cmd1=new SqlCommand ( "delete from news where newsid= "+this.id ,con);
cmd1.ExecuteNonQuery ();
con.Close ();
bind();
}

}
}
public void bind()
{
SqlConnection con=new SqlConnection (System.Configuration .ConfigurationSettings .AppSettings [ "con "]);
con.Open ();
SqlCommand cmd=new SqlCommand ( "select * from news ",con);
SqlDataReader sdr=cmd.ExecuteReader ();
this.mygrid .DataSource =sdr;
this.mygrid .DataBind ();
}


private void Page_Load(object sender, System.EventArgs e)
{
if(!this.IsPostBack )

{
bind();
}
}

#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.mygrid.ItemCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.mygrid_ItemCommand);
this.Load += new System.EventHandler(this.Page_Load);

}
#endregion

private void mygrid_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
switch (e.CommandName )
{
case "selectall ":
CheckBox chk=new CheckBox ();
for(int i=0;i <this.mygrid .Items .Count;i++ )
{
chk=(CheckBox)this.mygrid .Items [i].Cells [0].FindControl( "chkselect ");
chk.Checked =true;
}
break;
case "del ":del();

break;

}
这样就能实现了,记得散分给我:)
[解决办法]
js 或者 server 端都可以,
如果只需要做选择,当然采取客户端 js 了
没有 datagrid 的demo 了,提供个 datalist 的给你参考
http://www.cnblogs.com/Jinglecat/archive/2007/05/30/764570.html
[解决办法]
HTML部分: <HeaderTemplate> <INPUT id= "chbAllSelect " onclick= "SetAllSelect(this.checked); " type= "checkbox "> </HeaderTemplate>
javascript代码:
function SetAllSelect(isSelected)
{
var dgList = document.all( "dgSympList ");
var intCount = dgList.rows.length, chbSelect;
for (var intIndex=1; intIndex <intCount; intIndex++)
{
chbSelect = document.all( "dgSympList__ctl " + (intIndex + 2) + "_chbSelect ");
if (chbSelect == null)
{
continue;
}
chbSelect.checked = isSelected;


}
}
[解决办法]
<asp:DataGrid id= "DataGrid1 " runat= "server " AutoGenerateColumns= "False ">
<Columns>
<asp:TemplateColumn>
<HeaderTemplate>
<asp:CheckBox id= "chkAll " runat= "server "> </asp:CheckBox>
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox id= "chkSelect " runat= "server "> </asp:CheckBox>
</ItemTemplate>
</asp:TemplateColumn>
...
[解决办法]
那我判断是否全选是在什么事件里做的呢,用cs代码怎么写呢,sorry!我是刚学的.Net
------------------------------------------
自己定义个过程
写到删除按钮的事件就行了
protected void btnSubmit_Click(object sender, System.EventArgs e)
{
foreach (DataGridItem item in grdPlan1.Items)
{
CheckBox chk = (CheckBox)item.FindControl( "chkSelected ");
if (chk.Checked)
{
string planid = item.Cells[1].Text;
int serial = int.Parse(item.Cells[2].Text);

MaterialDetail detail = new MaterialDetail();
detail.Retrieve(planid, serial);

if (!this.CheckResult(detail.Submit(m_Hurry))) break;
}
}
}

[解决办法]
晕,我的代码就是在头部加一个checkbox的呀,只不过我给的是后台cs代码
html页的还用我给吗?
就是在前面加个模板列而已
[解决办法]
那我判断是否全选是在什么事件里做的呢,用cs代码怎么写呢,sorry!我是刚学的.Net
------------------
判断全选没有多大意义,通常我们只要获取选择了哪些项,进而获取该项的相关信息就可以了,


唉,还是要贴代码咯~

<%@ Page Language= "C# " %>
<%@ Import Namespace= "System.Data " %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN " "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd ">

<script runat= "server ">

void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack) {
// 首次加载数据一定要放在 !IsPostBack 内,
// 避免回发的时候再次绑定数据,覆盖复选框状态
LoadProductData();
}
}

void btnSubmit_Click(object sender, EventArgs e)
{
ArrayList selectedProductIdList = new ArrayList();
foreach (DataGridItem item in grdPro.Items) {
CheckBox chkItem = item.FindControl( "chkItem ") as CheckBox;
if (chkItem != null && chkItem.Checked) {
int proId = (int)grdPro.DataKeys[item.ItemIndex];
selectedProductIdList.Add(proId);
// add your more codes
// ...
Response.Write(proId + ", ");
}
}
}


void LoadProductData()
{
grdPro.DataSource = CreateProductTable();
grdPro.DataBind();
}

#region sample data


static DataTable CreateProductTable()
{
DataTable tbl = new DataTable( "Products ");

tbl.Columns.Add( "ProductID ", typeof(int));
tbl.Columns.Add( "ProductName ", typeof(string));


tbl.Columns.Add( "CategoryID ", typeof(int));
DataRow row = tbl.NewRow();
row[0] = 1;
row[1] = "Chai ";
row[2] = 1;
tbl.Rows.Add(row);

row = tbl.NewRow();
row[0] = 2;
row[1] = "Chang ";
row[2] = 1;
tbl.Rows.Add(row);

row = tbl.NewRow();
row[0] = 3;
row[1] = "Aniseed Syrup ";
row[2] = 2;
tbl.Rows.Add(row);

row = tbl.NewRow();
row[0] = 4;
row[1] = "Chef Anton 's Cajun Seasoning ";
row[2] = 2;
tbl.Rows.Add(row);

row = tbl.NewRow();
row[0] = 5;
row[1] = "Chef Anton 's Gumbo Mix ";
row[2] = 2;
tbl.Rows.Add(row);

row = tbl.NewRow();
row[0] = 47;
row[1] = "Zaanse koeken ";
row[2] = 3;
tbl.Rows.Add(row);

row = tbl.NewRow();
row[0] = 48;
row[1] = "Chocolade ";
row[2] = 3;
tbl.Rows.Add(row);

row = tbl.NewRow();
row[0] = 49;
row[1] = "Maxilaku ";
row[2] = 3;
tbl.Rows.Add(row);

return tbl;
}

#endregion

</script>

<html xmlns= "http://www.w3.org/1999/xhtml " >
<head runat= "server ">
<title> Nested DataList </title>
<script type= "text/javascript ">

// 有可能还包含其他用途的 checkbox,故提供
// 参数 suredId 确保关联的是正确的 checkbox,
function chkAll_Clicked(sender, suredId)
{
var cnt = sender.parentElement.parentElement.parentElement;
var nptArr = cnt.getElementsByTagName( "input ");
for(var i = 0; i < nptArr.length; i++) {
if(nptArr[i].type == 'checkbox ' && nptArr[i].id.indexOf(suredId) > -1) {
nptArr[i].checked = sender.checked;
}
}
}
</script>
</head>
<body>
<form id= "form1 " runat= "server ">
<div>
<asp:DataGrid ID= "grdPro " DataKeyField= "ProductID " AutoGenerateColumns= "false " runat= "server ">
<Columns>
<asp:TemplateColumn>
<HeaderTemplate>
<asp:CheckBox ID= "chkCatPro " onclick= "chkAll_Clicked(this, 'chkItem ') " ToolTip= "Check All " runat= "server " Text= "Check All " />
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID= "chkItem " Text= ' <%# Eval( "ProductName ") %> ' runat= "server " />
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
<asp:Button ID= "btnSubmit " Text= "获取选中信息 " runat= "server " OnClick= "btnSubmit_Click " />
</div>
</form>
</body>
</html>


Hope helpful!

热点排行