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

请教CheckBox 使用的一些有关问题

2012-06-14 
请问CheckBox 使用的一些问题想做一个审核的系统 用户添的信息 我用datalist 读出来的 想在前面加上复选框

请问CheckBox 使用的一些问题
想做一个审核的系统 用户添的信息 我用datalist 读出来的 想在前面加上复选框 是用CheckBox 这个控件吗? 
我想实现几个功能 就是全选 反选 然后还有一个按钮可以把选中数据的数据库值直接改了 让选中的通过审核 请问应该怎么实现?看到挺多网都这么做的 但是没接触过 先谢谢了 我用的是VB

[解决办法]
我以前是用javascript来控的。
方法,你可以查看页面能看到控件生成的id,然后找出规律,进行编程。
[解决办法]
<asp:datagrid id="grdServer" runat="server">
<Columns>
<asp:TemplateColumn>
<HeaderTemplate>
<asp:CheckBox id="chkAllServer" runat="server" AutoPostBack="True"></asp:CheckBox>
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox id="chkDelServer" runat="server"></asp:CheckBox>
</ItemTemplate>
</asp:TemplateColumn>
<asp:BoundColumn DataField="au_id" HeaderText="编号"></asp:BoundColumn>
// 只显示主要的下面的不写了……在grdClient中有绑定的详细列
</asp:datagrid>
我们给HerderTemple添加了一个chkAllServer其中Server说明它是调用服务器端事件的.我们为了给这个控件添加事件必须在创建DataGridItem的时候给它添加事件代码如下:
private void grdServer_ItemCreated(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e) {
if(e.Item.ItemType == ListItemType.Header){
CheckBox chk = (CheckBox)e.Item.FindControl("chkAllServer");
// 给页眉上的CheckBox添加出发事件
chk.CheckedChanged +=new EventHandler(chk_CheckedChanged);
}
}
事件处理程序如下所示:
// 得到指定DataGrid的题头的CheckBox对象
private CheckBox GetHeaderCheckBox(DataGrid grd){
CheckBox chk = null;
foreach (DataGridItem i in grd.Controls[0].Controls){
if(i.ItemType == ListItemType.Header){
chk = (CheckBox)i.FindControl("chkAllServer");
break;
}
}
return chk;
}
private void chk_CheckedChanged(object sender, System.EventArgs e) {
CheckBox chk = this.GetHeaderCheckBox(this.grdServer);
foreach (DataGridItem i in this.grdServer.Items){
CheckBox inChk = (CheckBox)i.FindControl("chkDelServer");
inChk.Checked = chk.Checked;
}
}
该事件处理程序将DataGrid里面的所有的CheckBox的Checked变的和题头的CheckBox的Checked的状态一样.
[解决办法]

VB.NET code
        '全选窗体内所有CheckBox        Dim ctrl As Control        Dim box As CheckBox        For Each ctrl In Me.Controls            If TypeOf ctrl Is CheckBox Then                box = CType(ctrl, CheckBox)                box.Checked = True            End If        Next        '反选窗体内所有CheckBox        Dim ctrl As Control        Dim box As CheckBox        For Each ctrl In Me.Controls            If TypeOf ctrl Is CheckBox Then                box = CType(ctrl, CheckBox)                box.Checked = Not box.Checked            End If        Next        '更新数据库        Dim ctrl As Control        Dim box As CheckBox        For Each ctrl In Me.Controls            If TypeOf ctrl Is CheckBox Then                box = CType(ctrl, CheckBox)                '执行SQL语句:"update [表] set 字段='" & CByte(box.Checked) & "' where 条件..."            End If        Next
[解决办法]
学习了
[解决办法]
学习了
[解决办法]
在DataList 的第一列放置CheckBox。在前台代码中,在你想实现全选的CheckBox中加上OnClick事件,传入个参数如:
<asp:CheckBox ID="CheckBox2" runat="server" Text="全选" onclick="check(this)" />


在写一个JavaScript脚本方法:
 function check(this)


{
var tags= document.getElementsByTagName("input");

for(var i=0;i<tags.length;i++)
{
if (tags[i].type=="checkbox")
tags[i].checked=ck.checked; 
}
}
[解决办法]
上面的用HTML的控件<input id="Checkbox2" type="checkbox" Text="全选" onclick="check(this)" />能实现
[解决办法]
3楼的正解
把2断代码分别写道3个按钮的事件里就行了
[解决办法]
比较好的办法是使用客户端 javascript 脚本,实现全选和反向选择的功能。

3楼的方法是使用服务器端回发,可以实现,就是要多一次回发,速度比较慢。
[解决办法]
同3楼的方法。

热点排行