直接用绑定可以实现,并不复杂,但也没有二楼说得那么简单
对于sqlserver数据库,通常用1来表示真,0表示假
GridView中有一列为CheckBox,添加了CheckBox后,编辑模板列,编辑DataBindings选择checked那一项,然后填上Convert.ToBoolean(Eval("bool"))
这样就实现了1为选中状态,0为未选中状态
<asp:GridView ID="GridView1" runat="server">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server" Checked='<%# Convert.ToBoolean(Eval("bool")) %>' />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
protected void Page_Load(object sender, EventArgs e)
{
DataTable dt = new DataTable()
dt.Columns.Add("bool", typeof(int))
DataRow dr0 = dt.NewRow()
dr0["bool"] = 1
dt.Rows.Add(dr0)
DataRow dr1 = dt.NewRow()
dr1["bool"] = 0
dt.Rows.Add(dr1)
DataRow dr2 = dt.NewRow()
dr2["bool"] = 1
dt.Rows.Add(dr2)
GridView1.DataSource = dt.DefaultView
GridView1.DataBind()
}
老实说我也第一次遇到这个问题,现帮你解决了,试验已通过,共同进步,呵呵!
简单例子,你在aspx页面上放上这个你喜欢的食物<br/>
<input type="checkbox" name="chbFood" value="apple" />苹果<br/>
<input type="checkbox" name="chbFood" value="orange" />橘子<br/>
<input type="checkbox" name="chbFood" value="banana" />香蕉<br/>
<input type="checkbox" name="chbFood" value="bread" />面包<br/>
<asp:Button runat="server" Text="提交" ID="btnSubmit"/>
在接收数据的页面的cs文件的Page_Lode里面放上这个
object obj=Request.Form["chbFood"]
if (obj != null)
{
string strFood = (string)obj
Response.Write(strFood)
}
当你做了选择,点击提交,就会在页面上输出你选中的项的value。
一般使用复选框都是为了批量 *** 作,,例如批量删除,在批量删除的时候,复选框绑定的是你这条数据的ID (也就是这条数据在数据库开面的ID)然后在对其进行 *** 作,给你段我我批量删除数据的代码吧:
function che() {
var checks = window.document.getElementById("cheks")
if (checks.checked == true) {
chAll()
}
else
RemoveAll()
}
function chAll() {
var selobj = document.getElementsByName("chek")
for (var i = 0i <selobj.lengthi++) {
selobj[i].checked = true
}
}
function RemoveAll() {
var selobj = document.getElementsByName("chek")
for (var i = 0i <selobj.lengthi++) {
selobj[i].checked = false
}
}
function delectAll(id) {
var items = ""
var selobj = document.getElementsByName("chek")
for (var i = 0i <selobj.lengthi++) {
if (selobj[i].checked == true) {
items = items + selobj[i].value + ","
}
}
debugger
if (items.length <= 0) {
alert("请选择要退寝的人员!!!")
return false
}
else {
if (id == "Batch") {
if (confirm("确定退寝吗?")) {
document.getElementById("iditems").value = items
return true
}
}
return false
}
}
这个是我的js
前台页面:
<asp:LinkButton ID="Batch" runat="server" Font-Underline="false"
OnClientClick='return delectAll(this.id)' CssClass="style" Font-Size="13px"
onclick="Batch_Click">批量退寝</asp:LinkButton>
<asp:HiddenField ID="iditems" runat="server" />//这是一个隐藏域:目的是存储所有选定的值
我用的是gridview控件
<asp:GridView ID="GridRoomOut" runat="server" AutoGenerateColumns="False" Width="100%"
AllowPaging="True" OnPageIndexChanging="GridView1_PageIndexChanging" PageSize="28"
Font-Size="13px" CellPadding="4" ForeColor="#333333" GridLines="None">
<AlternatingRowStyle BackColor="White" ForeColor="#284775" />
<Columns>
<asp:TemplateField >
<HeaderTemplate>
//这个是为了实现 全选 和反选的
<input name="cheks" id="cheks" type="checkbox" onclick="che()" />
</HeaderTemplate>
<ItemTemplate>
//这个是绑定数据的ID的
<input name="chek" id="chek" type="checkbox" value='<%#(Convert.ToString( Eval("ID"))) %>' />
</ItemTemplate>
</asp:TemplateField>
在后台:
后台删除:
protected void Batch_Click(object sender, EventArgs e)
{
//接受前台隐藏域的值 也就是说前台选中chekbox所绑定的ID值
string idtems = Request.Form["iditems"].ToString().TrimEnd(',')
string time = DateTime.Now.Date.ToShortDateString()
string[] ids = null
if(idtems!="")
{
ids = idtems.Split(',')
}
for (int i = 0i <ids.Lengthi++)
{
int id = int.Parse(ids[i].ToString())
if (dal.RoomOutUpdate(id,time) >0)
{
continue
}
}
ClientScript.RegisterStartupScript(GetType(), "", "alert('退寝成功!')window.location.href = window.location.href", true)
}
不明白的 你可以继续问我 希望能帮到你
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)