如何在gridview中用一个CheckBox控制另外几个CheckBox的灰暗?

GXUN 2009-04-23 08:52:20
如题,今天搞了一个下午+一个晚上仍然没有解决,耽误工程进度了,5555
哪位达人能够指点一二,感谢万分。
或加QQ指导(466603057)
...全文
198 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
GXUN 2009-04-24
  • 打赏
  • 举报
回复
为什么
malin2670372 2009-04-24
  • 打赏
  • 举报
回复
protected void CheckBox1_CheckedChanged(object sender, EventArgs e)
{
GridViewRow row = ((CheckBox)sender).Parent.Parent as GridViewRow;
index = row.RowIndex; //选择是否审批CheckBox1之后这里得到相应的行号,通过行号去控制其他CheckBox
cbx1 = (CheckBox)gvKZShenPi.Rows[index].FindControl("CheckBox1");
cbx2 = (CheckBox)gvKZShenPi.Rows[index].FindControl("CheckBox2");
cbx3 = (CheckBox)gvKZShenPi.Rows[index].FindControl("CheckBox3");
cbx4 = (CheckBox)gvKZShenPi.Rows[index].FindControl("CheckBox4");

if (cbx1.Checked)
{
cbx2.Enabled = true;
cbx3.Enabled = true;
cbx4.Enabled = true;
Response.Write("111111");
}
else{
cbx2.Enabled = false;
cbx3.Enabled = false;
cbx4.Enabled = false;
Response.Write("2222222");
}

}
//你没有else肯定括号里的也执行啊。
GXUN 2009-04-24
  • 打赏
  • 举报
回复
10楼的我有点看不明白
marssongxs 2009-04-24
  • 打赏
  • 举报
回复
for (int i = 0; i < gv.Rows.Count; i++)
{
CheckBox cbox = (CheckBox)gv.Rows[i].FindControl("chk1"); //cheAll是控制变灰的CheckBox
if (chkAll.Checked == true)
{
cbox.Checked = true;
}
else
{
chk1.Checked = false;
}
}
yuliangok520 2009-04-24
  • 打赏
  • 举报
回复
<%@ Page Language="C#" AutoEventWireup="true" MasterPageFile="~/MasterPage/AdminMasterPage.Master" CodeFile="MgAdmin.aspx.cs" Inherits="ShopAdmin.AdminInfo.MgAdmin" %>

<asp:Content ID="Content1" ContentPlaceHolderID="adminMgPageContent" runat="server">
<script type="text/javascript">
function selAll(boolValue)
{
var obj=document.getElementsByName("cbName");
var cbNameLen=obj.length;
if(cbNameLen>1)
{
for(var i=0;i<cbNameLen;i++)
{
if(obj[i].checked)
{
obj[i].checked=false;
}
else
{
obj[i].checked=true;
}
}

}
else
{
obj.checked = boolValue;
}
}

function clickBtnCheck()
{
var obj=document.getElementsByName("cbName");
var cbNameLen=obj.length;
var Flag=false;
if(cbNameLen>0)
{
for(var i=0;i<cbNameLen;i++)
{
if(obj[i].checked)
{
Flag=true;
break;
}
}
if(Flag)
{
return true;
}
else
{
alert("请先选择要操作的记录!!");
return false;
}
}
else
{
alert("现在没有记录,不能操作!!");
return false;
}
}
</script>
<div class="AdminNav">
<div>
<ul>
<li><a href="AddAdmin.aspx" title="添加收货地址">添加管理员</a></li>
<li class="now"><a href="#" title="管理收货地址">管理管理信息</a></li>
</ul>
</div>
</div>
<div class="AdminContent">
<table cellpadding="0" cellspacing="0" class="AdminTable" style=" border:1px solid #ff7300;">
<tr>
<td class="AdminTableTitle" colspan="2">管理管理信息</td>
</tr>
<tr>
<td class="FieldValue" colspan="2">
<asp:GridView ID="gvDataList" runat="server" AutoGenerateColumns="False"
BackColor="#DEBA84" BorderColor="#DEBA84" BorderStyle="None" BorderWidth="1px"
CellPadding="3" CellSpacing="2" onrowdatabound="gvDataList_RowDataBound" AllowPaging="True" PageSize="5">

<Columns>
<asp:TemplateField HeaderText="<input type='checkbox' id='cbAll' name='cbAll' onclick='selAll(this.checked);' />反选">
<ItemTemplate>
<!--selAll(this.checked);-->
<input type="checkbox" id="cbName" name="cbName" value='<%# DataBinder.Eval(Container.DataItem, "AdminId")%>' />
</ItemTemplate>
<ItemStyle Width="60px" />
</asp:TemplateField>
<asp:BoundField HeaderText="用户名" DataField="AdminName" HtmlEncode="False" >
<ItemStyle Width="100px" />
</asp:BoundField>
<asp:TemplateField HeaderText="用户类型">
<ItemTemplate>
<asp:Label ID="lbAdminType" runat="server"></asp:Label>
</ItemTemplate>
<ItemStyle Width="120px" />
</asp:TemplateField>
<asp:TemplateField HeaderText="状态">
<ItemTemplate>
<asp:Label ID="lbState" runat="server"></asp:Label>
</ItemTemplate>
<ItemStyle Width="120px" />
</asp:TemplateField>
</Columns>
<PagerStyle ForeColor="#8C4510" HorizontalAlign="Center" />
<EmptyDataTemplate>
<div class="NoInfo">
没有等待付款订单!!</div>
</EmptyDataTemplate>
<SelectedRowStyle BackColor="#738A9C" Font-Bold="True" ForeColor="White" />
<HeaderStyle HorizontalAlign="Center"
BackColor="#A55129" Font-Bold="True" ForeColor="White" />
<FooterStyle BackColor="#F7DFB5" ForeColor="#8C4510" />
<RowStyle Height="30px" HorizontalAlign="Center" BackColor="#FFF7E7"
ForeColor="#8C4510" />
</asp:GridView>
</td>
</tr>


<tr>
<td class="FieldValue" colspan="2">
<asp:Button ID="btnDel" runat="server" Text="删除管理员" OnClick="btnDel_Click" OnClientClick="return clickBtnCheck()" />
</td>
</tr>
</table>
<br />
</div>
</asp:Content>


看下,,要全选还是反选,早就修改代码
GXUN 2009-04-24
  • 打赏
  • 举报
回复
8楼,具体怎么写呢?
oiqio 2009-04-24
  • 打赏
  • 举报
回复
建议用js,在gridview生成后能够取到checkbox的id。通过判断checkbox1是否被选中来控制其他的checkbox。
如果用后台代码控制,大数据量的时候效率老低了。
GXUN 2009-04-24
  • 打赏
  • 举报
回复
6楼能贴出js的代码吗?要实现gridview中4个控件,当选中checkbox1时其他3个checkbox可以使用,取消checkbox1的勾选时其他3个checkbox不可用
太感谢你了
lfywy 2009-04-24
  • 打赏
  • 举报
回复
js控制最简单
happy664618843 2009-04-24
  • 打赏
  • 举报
回复
foreach(GridViewRow gr in Gridview1.Rows)
{
CheckBox box=(gr.findcontrol("CheckBox1") as CheckBox);
if(checkAll.checked==true)
{
box.checked=true;
}
else
{
box.checked=false;
}
}
试一下!
yyldir 2009-04-24
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 yuliangok520 的回复:]
<%@ Page Language="C#" AutoEventWireup="true" MasterPageFile="~/MasterPage/AdminMasterPage.Master" CodeFile="MgAdmin.aspx.cs" Inherits="ShopAdmin.AdminInfo.MgAdmin" %>

<asp:Content ID="Content1" ContentPlaceHolderID="adminMgPageContent" runat="server">
<script type="text/javascript">
function selAll(boolValue)
{
var obj=document.getElementsByName("cbName")…
[/Quote]
十楼给的是一个全选功能,如果,你是想变灰的话,就应该是obj[i].Enabled =false;这样改。。全选和你说的是一样的。。全选=true则全部为true,反之。
GXUN 2009-04-23
  • 打赏
  • 举报
回复
我这样写,可是输出 1111111222222,郁闷,说明勾选CheckBox1的时候这条语句执行了两次:
protected void CheckBox1_CheckedChanged(object sender, EventArgs e)
{
GridViewRow row = ((CheckBox)sender).Parent.Parent as GridViewRow;
index = row.RowIndex; //选择是否审批CheckBox1之后这里得到相应的行号,通过行号去控制其他CheckBox
cbx1 = (CheckBox)gvKZShenPi.Rows[index].FindControl("CheckBox1");
cbx2 = (CheckBox)gvKZShenPi.Rows[index].FindControl("CheckBox2");
cbx3 = (CheckBox)gvKZShenPi.Rows[index].FindControl("CheckBox3");
cbx4 = (CheckBox)gvKZShenPi.Rows[index].FindControl("CheckBox4");

if (cbx1.Checked)
{
cbx2.Enabled = true;
cbx3.Enabled = true;
cbx4.Enabled = true;
Response.Write("111111");
}
{
cbx2.Enabled = false;
cbx3.Enabled = false;
cbx4.Enabled = false;
Response.Write("2222222");
}

}
GXUN 2009-04-23
  • 打赏
  • 举报
回复
不明白,能写完整一点吗
yuanmanguo 2009-04-23
  • 打赏
  • 举报
回复
for (int i = 0; i <= gvKZShenPi.Rows.Count - 1; i++)
{
dgv.Rows[i].Cells[2].Value =dgv.Rows[i].Cells[1].Value ;
dgv.Rows[i].Cells[3].Value =dgv.Rows[i].Cells[1].Value ;
dgv.Rows[i].Cells[4].Value =dgv.Rows[i].Cells[1].Value ;

}
GXUN 2009-04-23
  • 打赏
  • 举报
回复
恩恩,我不知道怎么用FindControl找到我所勾选的CheckBox1相同行的其他CheckBox
大哥能帮我写出我想实现的功能吗?
我这样写不行:
for (int i = 0; i <= gvKZShenPi.Rows.Count - 1; i++)
{
cbx1 = (CheckBox)gvKZShenPi.Rows[i].FindControl("CheckBox1");
cbx1.AutoPostBack = true;
cbx2 = (CheckBox)gvKZShenPi.Rows[i].FindControl("CheckBox2");
cbx3 = (CheckBox)gvKZShenPi.Rows[i].FindControl("CheckBox3");
cbx4 = (CheckBox)gvKZShenPi.Rows[i].FindControl("CheckBox4");

}

if (cbx1.Checked)
{
cbx2.Enabled = true;
cbx3.Enabled = true;
cbx4.Enabled = true;
Response.Write("已经选中审批");
}
{
cbx2.Enabled = false;
cbx3.Enabled = false;
cbx4.Enabled = false;
Response.Write("没有选中审批");
}
孟子E章 2009-04-23
  • 打赏
  • 举报
回复
你要是了解DHTML的知识,这个应该是很简单的,直接在客户端使用js就可以,
当然完全采用服务器控件也是可以的,但你需要使用FindControl找到你的控件

62,046

社区成员

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

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

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

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