注册 登录
编程论坛 ASP.NET技术论坛

[求助]全选问题

lmyh5201 发布于 2007-06-07 17:49, 3520 次点击
LinkButton lb=(LinkButton)e.Item.FindControl("btn");
CheckBox cb=(CheckBox)e.Item.FindControl("ck");
if(lb.Text=="全选")
{
for(int i=0;i<this.DataGrid1.Items.Count;i++)
{
if(cb!=null)
{
cb.Checked=true;
}
}
lb.Text="取消";
}
else
{
for(int i=0;i<this.DataGrid1.Items.Count;i++)
{
if(cb!=null)
{
cb.Checked=false;
}
}
lb.Text="全选";
}

为什么它不全选呀
59 回复
#2
川流不息2007-06-08 08:43
for(int i=0;i<this.DataGrid1.Items.Count;i++)
{
if(cb!=null)
{
cb.Checked=true;//你在循環內一直在對這一個對象在進行對象,其余的CheckBox你根本動都
//沒有動,你要它如何全選。
}
}
#3
lmyh52012007-06-09 14:30
那要怎么做呢
#4
头发抓没了2007-06-09 16:47
选中你要全选的控件就可以了!!
#5
lmyh52012007-06-09 16:53

代码呢

#6
qittdgd2007-06-09 19:13
是用DataGrid,不是用GridView?
#7
qittdgd2007-06-09 19:13

DataGrid 我得去看看..

#8
lmyh52012007-06-11 08:47

没有人回吗

#9
川流不息2007-06-11 08:55
for(int i=0;i<this.DataGrid1.Items.Count;i++)
{
CheckBox cb=(CheckBox)e.Item.FindControl("ck");//你在這個循環裡面去定義CheckBox對象,當
//然,怎麼得到我就說不出了,自己想辦法。
if(cb!=null)
{
cb.Checked=true;
}
}
#10
lmyh52012007-06-11 08:57
这样也不行呀,我试过呀
#11
川流不息2007-06-11 09:02
代碼拿出來,我看看有沒有哪不對的。
#12
lmyh52012007-06-11 09:05
LinkButton lb=(LinkButton)e.Item.FindControl("btn");
CheckBox cb=(CheckBox)e.Item.FindControl("ck");
if(lb.Text=="全选")
{
for(int i=0;i<this.DataGrid1.Items.Count;i++)
{
if(cb!=null)
{
cb.Checked=true;
}
}
lb.Text="取消";
}
else
{
for(int i=0;i<this.DataGrid1.Items.Count;i++)
{
if(cb!=null)
{
cb.Checked=false;
}
}
lb.Text="全选";
}
#13
lmyh52012007-06-11 09:07
我是在DataGrid1_ItemCommand这个事件里写的
#14
川流不息2007-06-11 09:48
以下是引用lmyh5201在2007-6-11 8:57:23的发言:
这样也不行呀,我试过呀

我是說的這一個代碼,不是你前面展示的,你前面展示的我都已經指出錯誤了。

#15
lmyh52012007-06-11 10:10
在DATAGRID的编辑摸版里,旧有一个CHECKBOX呀,你怎么让其余的也循环选中呢
只有本站会员才能查看附件,请 登录

#16
川流不息2007-06-11 10:18
是采用2003是吧?
如果是2005就好做一些,2003的話,要是我,我會采取JS去全部選取,要簡單一些。
#17
川流不息2007-06-11 10:19

function funSelectAll()
{
var intLen = document.getElementsByTagName("input").length;
var objA = document.getElementsByTagName("input");
for(var i=0;i<intLen;i++)
{
var objS = objA[i].getAttribute("type");
if(objS=="checkbox")
{
objA[i].checked=true;
}
}
return false;
}
#18
lmyh52012007-06-11 10:19
我不会JS呀
#19
川流不息2007-06-11 10:24
你不會JS?-_-||這是不行的,你一定要學會JS。呵呵,不然,你就是斷了一條腿了。
#20
lmyh52012007-06-11 11:30

这JS是在HTML页面写是吗?还是单写一个JS文件呀

#21
川流不息2007-06-11 11:33
都可以,你寫在JS文件的話就在頁面上導入這個JS文件,如果寫在HTML頁面就不用導入,直接調用函數就可以了。
#22
lmyh52012007-06-11 11:37
那JS怎么写呀?你刚才发的,我看不懂呀
#23
川流不息2007-06-11 11:48

你直接把那們放在你JS代碼中,那段代碼的意思是:將所有的復選框選中。如果你要將所有的復選框去除選中,就把那個true改為false.

#24
川流不息2007-06-11 11:50
然後在Page_Load裡面給那個 LinkButton注冊JS事件。
this.LinkButton名字.Attributes.Add("onclick", "return JS函數名字();");
#25
lmyh52012007-06-11 12:00
哦,我试试
#26
lmyh52012007-06-11 12:33

怎么我注册事件的时候,注册不了呀,this打点后面没有那个名字呀,是不是因为这个linkbutton是在datagrid里面的原因呀

#27
lmyh52012007-06-11 12:58
怎么回事呀
#28
川流不息2007-06-11 13:38
你在DataBound這個事件找找吧。
#29
lmyh52012007-06-11 13:42
也没有呀
#30
lmyh52012007-06-11 13:47
你那input,type分别是什么意思呀
#31
川流不息2007-06-11 13:49
&lt;input type="checkbox" id="cbkTemp"&gt;//就是這些屬性
#32
lmyh52012007-06-11 13:51
function funSelectAll()
{
var objA = document.getElementsByTagName("input");
for(var i=0;i<intLen;i++)
{
var objS = objA[i].getAttribute("type");
if(objS=="checkbox")
{
objA[i].checked=true;
}
}
return false;
}
我这样写的,怎么没有反映呀
#33
lmyh52012007-06-11 14:07

那我input那写什么呢?type那写什么呢?

#34
川流不息2007-06-11 14:12
funSelectAll()
調用這個函數沒?
#35
川流不息2007-06-11 14:16
function funSelectAll()
{
var intLen = document.getElementsByTagName("input").length;//還有這一句你給落了。
var objA = document.getElementsByTagName("input");
for(var i=0;i<intLen;i++)
{
var objS = objA[i].getAttribute("type");
if(objS=="checkbox")
{
objA[i].checked=true;
}
}
return false;
}
#36
lmyh52012007-06-11 14:16

我在这个事件里写的:private void DataGrid1_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
LinkButton lb=(LinkButton)e.Item.FindControl("btn");
lb.Attributes.Add("onclick","return funSelectAll()");
}

我这样写的

#37
川流不息2007-06-11 14:18
DataGrid1_ItemCommand
為什麼要在這個事件裡面寫?
#38
川流不息2007-06-11 14:19
DataBound在這個事件中寫。
#39
lmyh52012007-06-11 14:22

写到那里面就包错了:未将对象引用设置到对象的实例。

#40
川流不息2007-06-11 14:25

LinkButton lb=(LinkButton)e.Item.FindControl("btn");
那就是這個對象沒有得到。

#41
lmyh52012007-06-11 14:27
那也不能直接写这一句:linkbutton(名字).Attributes.Add("onclick","return funSelectAll()");呀,他打点根本就没有attributes这个属性

#42
lmyh52012007-06-11 14:59

怎么解决呀斑竹

#43
川流不息2007-06-11 15:18

if((e.Item.ItemType != ListItemType.AlternatingItem) && (e.Item.ItemType != ListItemType.Item))
{
((LinkButton)e.Item.Cells[4].FindControl("btn")).Attributes.Add("onclick","return funSelectAll()");
}
在DataBound事件試試

#44
lmyh52012007-06-11 15:26

他还是包错:未将对象引用设置到对象的实例。

#45
川流不息2007-06-11 15:28
不玩了,你把你的這個頁面加CS發到我的郵箱中:killyourbug@gmail.com
#46
lmyh52012007-06-11 16:00
我发完了,你看看把
#47
lmyh52012007-06-11 16:26

怎么样了呀斑竹

#48
川流不息2007-06-11 16:48
先不說其他的,只說我給你的代碼,你全改錯了。
你不要改我給你的東西。原封不動。
#49
lmyh52012007-06-11 16:53
哦,可我不明白那段JS是什么意思呀
#50
lmyh52012007-06-11 16:55
<script language="javascript">
function funSelectAll()
{
var intLen = document.getElementsByTagName("input").length;
var objA = document.getElementsByTagName("input");
for(var i=0;i<intLen;i++)
{
var objS = objA[i].getAttribute("type");
if(objS=="checkbox")
{
objA[i].checked=true;
}
}
return false;
}
</script>

这是那段JS代码
#51
川流不息2007-06-11 17:05
我是說JS。至代碼裡面的我正在試。
12