主要解决三个问题:1. 选中列表头的CheckBox后,这一列即全部被选中.2. 选中一行中的"第一级别"后,后边的第二.第三.第四就变灰不能再选中了.3. 选中第三级别全列后.第五级别全列随即自动选中.请高手们复制看了之后,帮忙解决一下,在线等.谢谢!DataGrid布局如下:<asp:datagrid id="Datagrid2" style="Z-INDEX: 104; LEFT: 16px; POSITION: absolute; TOP: 200px"
runat="server" Width="100%" AutoGenerateColumns="False" BorderStyle="None" BackColor="White"
CellPadding="3" AllowSorting="True" BorderWidth="1px" BorderColor="#CCCCCC">
<SelectedItemStyle Font-Bold="True" ForeColor="White" BackColor="#669999"></SelectedItemStyle>
<AlternatingItemStyle BackColor="#F3F3F3"></AlternatingItemStyle>
<ItemStyle ForeColor="#000066"></ItemStyle>
<HeaderStyle Font-Bold="True" ForeColor="White" BackColor="#006699"></HeaderStyle>
<FooterStyle ForeColor="#000066" BackColor="White"></FooterStyle>
<Columns>
<asp:BoundColumn DataField="DisplayName" SortExpression="DisplayName" HeaderText="级别名称"></asp:BoundColumn>
<asp:TemplateColumn HeaderText="">
<HeaderTemplate>
<asp:CheckBox id="chkAdminAll" runat="server" Text="第一级别"></asp:CheckBox>
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox id="chkAdmin" runat="server"></asp:CheckBox>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="">
<HeaderTemplate>
<asp:CheckBox id="chkLookAll" runat="server" Text="第二级别"></asp:CheckBox>
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox id="chkLook" runat="server"></asp:CheckBox>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="">
<HeaderTemplate>
<asp:CheckBox id="chkAddNewAll" runat="server" Text="第三级别"></asp:CheckBox>
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox id="chkAddNew" runat="server"></asp:CheckBox>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="">
<HeaderTemplate>
<asp:CheckBox id="chkUpdateAll" runat="server" Text="第四级别"></asp:CheckBox>
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox id="chkUpdate" runat="server"></asp:CheckBox>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="">
<HeaderTemplate>
<asp:CheckBox id="chkDeleteAll" runat="server" Text="第五级别"></asp:CheckBox>
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox id="chkDelete" runat="server"></asp:CheckBox>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
<PagerStyle HorizontalAlign="Left" ForeColor="#000066" BackColor="White" Mode="NumericPages"></PagerStyle>
</asp:datagrid>
runat="server" Width="100%" AutoGenerateColumns="False" BorderStyle="None" BackColor="White"
CellPadding="3" AllowSorting="True" BorderWidth="1px" BorderColor="#CCCCCC">
<SelectedItemStyle Font-Bold="True" ForeColor="White" BackColor="#669999"></SelectedItemStyle>
<AlternatingItemStyle BackColor="#F3F3F3"></AlternatingItemStyle>
<ItemStyle ForeColor="#000066"></ItemStyle>
<HeaderStyle Font-Bold="True" ForeColor="White" BackColor="#006699"></HeaderStyle>
<FooterStyle ForeColor="#000066" BackColor="White"></FooterStyle>
<Columns>
<asp:BoundColumn DataField="DisplayName" SortExpression="DisplayName" HeaderText="级别名称"></asp:BoundColumn>
<asp:TemplateColumn HeaderText="">
<HeaderTemplate>
<asp:CheckBox id="chkAdminAll" runat="server" Text="第一级别"></asp:CheckBox>
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox id="chkAdmin" runat="server"></asp:CheckBox>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="">
<HeaderTemplate>
<asp:CheckBox id="chkLookAll" runat="server" Text="第二级别"></asp:CheckBox>
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox id="chkLook" runat="server"></asp:CheckBox>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="">
<HeaderTemplate>
<asp:CheckBox id="chkAddNewAll" runat="server" Text="第三级别"></asp:CheckBox>
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox id="chkAddNew" runat="server"></asp:CheckBox>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="">
<HeaderTemplate>
<asp:CheckBox id="chkUpdateAll" runat="server" Text="第四级别"></asp:CheckBox>
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox id="chkUpdate" runat="server"></asp:CheckBox>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="">
<HeaderTemplate>
<asp:CheckBox id="chkDeleteAll" runat="server" Text="第五级别"></asp:CheckBox>
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox id="chkDelete" runat="server"></asp:CheckBox>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
<PagerStyle HorizontalAlign="Left" ForeColor="#000066" BackColor="White" Mode="NumericPages"></PagerStyle>
</asp:datagrid>
解决方案 »
- 前台应用Server.UrlEncode()方法
- 关于将一段HTML代码导出为PDF文件的问题
- PagedDataSource 和datatable的类型转化?
- 动态生成HTML文件的问题 急
- 50分问个问题
- 想取掉百度搜索的内容
- 50分求高手指点,已经2天了还没解决,思归等高手帮帮忙啊
- 继上贴:请问那DataReader关闭了,我又如何读取数据呢?
- 请问Crystal Reports在什么地方找阿!
- 请问怎样从数据库里提出前10个字符(不是记录)绑定到DATAGRID上?
- .net+win2000 server 客户端运行提示权限不够.(高分求解)
- WebHtmlEditor的上传文件夹在运行时能不能修改啊
后台加:
protected void chkAdminAll_CheckedChanged(object sender, System.EventArgs e)
{
for(int i=0;i<Dtg.Items.Count;i++)
{
System.Web.UI.WebControls.CheckBox _chkItem=(System.Web.UI.WebControls.CheckBox)Dtg.Items[i].FindControl("chkAdmin");
_chkItem.Checked=(_chkItem.Checked==true?false:true);
}
}
前台:
<asp:CheckBox id="chkAdminAll" runat="server" Text="第一级别"></asp:CheckBox>
改成
<asp:CheckBox id="chkAdminAll" runat="server" Text="第一级别" OnCheckedChanged="chkAdminAll_CheckedChanged" AutoPostBack="true"></asp:CheckBox>done!
function clickbox(obj)
{
var e;
var i;
if (obj.checked)
{
for( i=0; i<document.Form1.elements.length;i++)
{
e = document.Form1.elements[i];
if(e.name=="chkAdmin")//第一列全选
{
e.checked = true;
}
if (e.name=="chkLookAll")//其他列变灰
{
e.disabled = true;
}
}
}
else
{
for( i=0; i<document.Form1.elements.length;i++)
{
e = document.Form1.elements[i];
if(e.name=="chkAdmin")//第一列不选
{
e.checked = false;
}
if (e.name=="chkLookAll")//其他列恢复
{
e.disabled = false;
}
}
}
}其他的就类似了
后台加:
protected void chkAdmin_CheckedChanged(object sender, System.EventArgs e)
{
for(int i=0;i<Dtg.Items.Count;i++)
{
System.Web.UI.WebControls.CheckBox _chkItem1=(System.Web.UI.WebControls.CheckBox)Dtg.Items[i].FindControl("chkAddNew");
System.Web.UI.WebControls.CheckBox _chkItem2=(System.Web.UI.WebControls.CheckBox)Dtg.Items[i].FindControl("chkUpdate");
System.Web.UI.WebControls.CheckBox _chkItem3=(System.Web.UI.WebControls.CheckBox)Dtg.Items[i].FindControl("chkLook");
System.Web.UI.WebControls.CheckBox _chkItem4=(System.Web.UI.WebControls.CheckBox)Dtg.Items[i].FindControl("chkDelete");
System.Web.UI.WebControls.CheckBox _chkItem=(System.Web.UI.WebControls.CheckBox)Dtg.Items[i].FindControl("chkAdmin");
if(_chkItem.Checked)
{
_chkItem1.Enabled=false;
_chkItem1.Checked=false;
_chkItem2.Enabled=false;
_chkItem2.Checked=false;
_chkItem3.Enabled=false;
_chkItem3.Checked=false;
_chkItem4.Enabled=false;
_chkItem4.Checked=false;
}
else
{
_chkItem1.Enabled=true;
_chkItem2.Enabled=true;
_chkItem3.Enabled=true;
_chkItem4.Enabled=true;
}
}
}
前台:
<asp:CheckBox id="chkAdmin" runat="server"></asp:CheckBox>
改成:
<asp:CheckBox id="chkAdmin" OnCheckedChanged="chkAdmin_CheckedChanged" AutoPostBack=true runat="server"></asp:CheckBox>
<HeaderTemplate>
<input type=checkbox name="chkAdminAll" onclick="clickbox(this)">one
</HeaderTemplate>
<ItemTemplate>
<input type=checkbox name="chkAdmin"> </ItemTemplate>
</asp:TemplateColumn>类似于这样
你还可以给checkbox绑定数据
<input type=chexkbox name="" onclick="clickbox(this)" value='<%# DataBinder.Eval(Container.DataItem,"你的字段名") %>'>在后台拿值得时候可以直接Request["name"]就可以得到选中的checkbox
比如string str = Request["chkAdmin"];就是所有选中的chkAdmin的value,用逗号分割的
看下这个文章不知道能否帮助
就是<input type=checkbox name="chkAdminAll" onclick="clickbox(this)">第一级//注意onclick这种其次,给你需要处理的checkbox上添加js事件,就是上面的onclick,给每个all的chexkbox都要加在次,在js事件里写你的逻辑
比如全选,就是遍历所有的你需要选择的checkbox,把他们选中,就像上面的
e = document.Form1.elements[i];
if(e.name=="chkAdmin")//第一列全选
{
e.checked = true;
}
变灰使用disabled ,就像
if (e.name=="chkLookAll")//其他列变灰,得判断你所有的需要变灰的checkbox,我这里只写了一个
{
e.disabled = true;
}当全选checkbox取消选择的时候,你要把该列以及变灰的checkbox都恢复
就是上面else的那段主要的代码就是这些,不知道这样解释你明白没?
上面的代码我测试过,没有问题,你自己好好看看吧
如果你想排序以后仍然保留选择,那你需要借助hidden,保存下来你的操作
因为是客户端的东西,所以你post页面的时候肯定会丢失
这部分代码就自己写吧
恳请各位大侠顶力相助..感谢!