DataGrid的行选择问题,高手来看一看!小妹在线等!

NetFair 2004-09-07 10:02:04
我在DataGrid中加了一个模板列,上面放有一个CheckBox。我想问的是如何保证我每个页面上只有一个checkbox被选中,因为,每个页面上会有十条记录,即十个checkbox。还有就是,当我选择了checkbox以后,如果根据checkbox的状态来决定其它button是否可以用?
...全文
606 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
vzxq 2004-09-07
  • 打赏
  • 举报
回复
RadioButton
Seeko0 2004-09-07
  • 打赏
  • 举报
回复
补充:如果使用radiobox ,请设置radiobox.name ="一个相同的值";表示为一组单选的意思
Seeko0 2004-09-07
  • 打赏
  • 举报
回复
我认为使用js问题会更加简单,在创建CheckBox的时候Attribute["onchange"]="return check();";

//一下是脚本文件
function check(){
//获取当前选中的checkbox对象
var chk= event.srcElement;
//保存选择状态
var isChecked= chk.checked;
//获取所有的input对象
var all= document.getElementsByTagName("input");
for(i=0;i<all.length;i++){
if(all[i].type=="checkbox"){
//全部不选
all[i].checked = false;
}
}

chk.checked = isChecked;
}
//以上同理,可以根据checkbox 和button id上的区别来确定button是否可用
BillTuan 2004-09-07
  • 打赏
  • 举报
回复
for(int r=0;r<grid.items.count;r++)
{
if(r!=i)
{
dgi=grid.items[r];
chk=dgi.findcontorl("chk");
chk.checked=false;
}
}
应该还要更正一下!
BillTuan 2004-09-07
  • 打赏
  • 举报
回复
void MyChkChanged(Object sender, EventArgs e)---->
protected void MyChkChanged(Object sender, EventArgs e)
BillTuan 2004-09-07
  • 打赏
  • 举报
回复
用protected限定一下吧,不好意思!
ccwq 2004-09-07
  • 打赏
  • 举报
回复
把Private 改成public
NetFair 2004-09-07
  • 打赏
  • 举报
回复
声明:楼上使用ckeckbox或radiobutton都不行啊,还是会被多选。如果手工在html文件里为checkbox增加点击事件,系统无法编译通过!
请大家多想办法了,帮帮忙!
NetFair 2004-09-07
  • 打赏
  • 举报
回复
To BillTuan()
老大,不行,系统有以下提示
编译器错误信息: CS0122: 不可访问“DBMS.Sys.SysFunctionFrm.MyChkChanged(object, System.EventArgs)”,因为它受保护级别限制
源错误:
行 53: </HeaderTemplate>
行 54: <ItemTemplate>
行 55: <asp:CheckBox id="ckID" runat="server" OnCheckedChanged="MyChkChanged" AutoPostBack="True"></asp:CheckBox>
行 56: </ItemTemplate>
行 57: <EditItemTemplate>
rickjelly2004 2004-09-07
  • 打赏
  • 举报
回复
对于以上的,我想说一句,你们用RadioButton的话会写很多的代码,在DATAGRID中他能保证只选择一个呢???????GROUP一样吗????
我做的一个就是不要加控加,你就在某一列
譬如:
for i=0 to 9
datagrid.rows(i)(0)="<input type=radio name='rdoSelect' value='" & i & "'>"
next
那一个要选中的话就是加一个CHECKED

后台要取的话就是
HttpContext.Current.Request("rdoSelect")
BillTuan 2004-09-07
  • 打赏
  • 举报
回复
//.aspx文件中注册事件:

<ItemTemplate>
<asp:CheckBox id="chk" runat="server" OnCheckedChanged="MyChkChanged" AutoPostBack="true" />
</ItemTemplate>

//CS文件声明事件:

void MyChkChanged(Object sender, EventArgs e)
{
int i=0;
CheckBox chk=(CheckBox)sender;
DataGridItem dgi = (DataGridItem)chk.Parent.Parent;

i=dgi.ItemIndex; //i为当前行

if(chk.Checked)
{
//赋其它行的checkbox的checked的值为false;
for(int r=0;r<grid.items.count;r++)
{
dgi=grid.items[r];
chk=dgi.findcontorl("chk");
chk.checked=false;
}
}
}

大小写没区分,相信思路差不多啦
sportdog 2004-09-07
  • 打赏
  • 举报
回复
datagrid不是有选择列吗?
你的checkbox没有啥意义!
hl80 2004-09-07
  • 打赏
  • 举报
回复
Radio Btuuon常用于从多个选项中选择一个选项的功能.可以从一组特定的Radio Button中只能挑选一个

选项.这些功能常用于从一个DataGrid挑选一行的作业.下面这篇文章将会告诉你如何做到这一点.
为什么RadioButton Web Control不能直接使用呢?
DataGrid可以允许你将任何控件放于Teamlat Column中.你可以在同一行中加入RadioButton,但如果你

将RadioButton放入DataGrid中.他们将在每行里于每行Container里的RadioButton中生成一个唯一名(un

ique name).这样导致了每个radio分开独立的操作运行.....(下面的不就译了嘿..)
解决方法
为了解决上面提到的问题.建立一个template并放一个Label控件在里面.
在itemDataBoud事件中.. 编写<input

type=radio>和设置其name属性.这将会显示在DataGrid中一个RadioButton..这样你可以达成你目的了
返回Selected Radio的值
我们的作业还没有完全完成,我们怎么样才能取得Radio的值呢.我们不直接使用RadioButton就不能直接

得的取得他的值了..不过我们可以使用Request.Form中取得他.
保持其状态.
我们不直接使用Radio控件.我们就无法的自动保持其状态了.所以我们不得不手工来去保持其状态.这样是为了我们如果在Broweer中点击back时前一次选择的项还在.我们可以各类事件在在DataGrid中为<input>添加checked标记来实现.
coffeewar 2004-09-07
  • 打赏
  • 举报
回复
既然只有一个checkbox被选中,那干嘛不用 RadioButton
NetFair 2004-09-07
  • 打赏
  • 举报
回复
多谢楼上的发言,我试下,请大家多多帮助了
gengxin_914 2004-09-07
  • 打赏
  • 举报
回复
用单选按钮吧
leisang 2004-09-07
  • 打赏
  • 举报
回复
这样还是不要用CheckBox了,因为DataGrid本身提供了Select状态,可以保证只选择1行
有时候看问题可以换个角度思考
NetFair 2004-09-07
  • 打赏
  • 举报
回复
help up
joecfan 2004-09-07
  • 打赏
  • 举报
回复
不是“保证我每个页面上只有一个checkbox被选中”吗?那就用radio

<input type=radio id="radioButton" name="radioButton" value="">
function Fnc_GetRadionVal() {

var Obj = document.getElementsByName("radioButton")

if (Obj.length == null) {
if (Obj.checked) {
return Obj.value;
}
} else {
for (var i=0; i < Obj.length; i++) {
if (Obj[i].checked) {
return Obj[i].value;
}
}
}
return null;
}
hanbinghai 2004-09-07
  • 打赏
  • 举报
回复
up

62,266

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧