请问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的状态一样.
[解决办法]
'全选窗体内所有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楼的方法。