在asp.net中实现datagrid checkbox 全选的方法

  

复制代码 代码如下:
<form runat="server">

  <asp:DataGrid AutoGenerateColumns="false"  OnItemCreated="itemcreate" DataKeyField="link_id" ID="mydg" runat="server" >

  <columns>

  <asp:TemplateColumn>

  <headertemplate>

  <asp:CheckBox ID="checkall" OnCheckedChanged="chkall_onchanged"  AutoPostBack="true" runat="server"></asp:CheckBox>

  </headertemplate>

  <itemtemplate>

  <asp:CheckBox ID="checkdel" runat="server"></asp:CheckBox>

  </itemtemplate>

  </asp:TemplateColumn>

  <asp:BoundColumn DataField="link_id" HeaderText="Link_Id" ></asp:BoundColumn>

  <asp:BoundColumn HeaderText="网站名称" DataField="sitename" />

  <asp:BoundColumn HeaderText="网站地址" DataField="url" />

  <asp:BoundColumn HeaderText="网站介绍" DataField="intro" />

  <asp:BoundColumn HeaderText="网站评分" DataField="grade" />

  <asp:BoundColumn HeaderText="提交时间" DataField="submit_date"></asp:BoundColumn>

  </columns>

  </asp:DataGrid>

  <asp:Label ID="lb1" runat="server"></asp:Label>

  <asp:Button ID="btn1" Text="删 除" runat="server" OnClick="btn1_onclick"></asp:Button>

  <asp:Button ID="ok" OnClick="ok_click" Text="保存修改" runat="server"></asp:Button>

  <asp:Button ID="cancel" OnClick="cancel_click" Text="取消修改" runat="server"></asp:Button>

  </form>

  <%@ import namespace="system.data"%>

  <%@ import namespace="system.data.oledb"%>

  <script language="vb" runat="server">

  dim conn as  oledbconnection

  dim ds as dataset

  sub Page_load(sender as object,e as eventargs)

  if not ispostback then

  calldb()

  else

  ds=session("ds")

  end if

  end sub

  sub calldb()

  conn = new oledbconnection("provider=Microsoft.jet.oledb.4.0;data source="& server.MapPath("wwwlink.mdb"))

  dim sqlstr="select * from link"

  conn.open()

  dim adp as new oledbdataAdapter(sqlstr,conn)

  ds =new dataset()

  adp.fill(ds,"link")

  mydg.DataSource=ds.tables("link").defaultview

  mydg.databind()

  conn.close()

  session("ds")=ds

  end sub

  sub btn1_onclick(sender as object, e as eventargs)

  dim chk as checkbox

  dim id as string

  dim datag as datagriditem

  conn = new oledbconnection("provider=Microsoft.jet.oledb.4.0;data source="& server.MapPath("wwwlink.mdb"))

  dim sqlstr as string

  dim cmd as oledbcommand

  dim i as integer

  'for each datag in mydg.items

  for i=0 to mydg.items.count-1

  'chk=ctype(datag.findcontrol("checkdel"),checkbox)

  'chk=datag.findcontrol("checkdel")

  chk=mydg.items(i).cells(0).findcontrol("checkdel")

  if chk.checked then

  id=cstr(mydg.items(i).cells(1).text)

  'id=cstr(mydg.datakeys(datag.itemindex))

  conn.open()

  sqlstr="delete from link where link_id=" & id

  cmd=new oledbcommand(sqlstr,conn)

  cmd.executenonquery

  'ds.tables("link").rows(i).delete()

  conn.close()

  end if

  next

  'session("ds")=ds

  'mydg.edititemindex=-1

  'mydg.datasource=ds.tables("link").defaultview

  'mydg.databind()

  calldb()

  end sub

  sub cancel_click(sender as object, e as eventargs)

  calldb()

  end sub

  sub ok_click(sender as object, e as eventargs)

  conn=new oledbconnection("provider=Microsoft.jet.oledb.4.0;data source="&server.MapPath("wwwlink.mdb"))

  dim adp as new oledbdataadapter("select * from link",conn)

  dim ocb as new oledbcommandbuilder(adp)

  adp.updatecommand=ocb.getupdatecommand()

  adp.deletecommand=ocb.getdeletecommand()

  adp.update(ds,"link")

  calldb()

  end sub

  dim checka as checkbox

  sub itemcreate(sender as object, e as datagriditemeventargs)

  if (e.item.itemtype=Listitemtype.Header) then

  checka=e.item.findcontrol("checkall")

  end if

  end sub

  sub chkall_onchanged(sender as object,e as eventargs)

  dim i as integer

  if checka.checked=true then

  for i=0 to mydg.items.count-1

  dim chk as checkbox=mydg.items(i).cells(0).findcontrol("checkdel")

  chk.checked=true

  next

  else

  for i=0 to mydg.items.count-1

  dim chk as checkbox=mydg.items(i).cells(0).findcontrol("checkdel")

  chk.checked=false

  next

  end if

  end sub

  </script>