为datagrid增加一模板列,然后编辑该模板列,拖放checkbox即可

解决方案 »

  1.   

    <asp:TemplateColumn>
    <ItemTemplate>
    <asp:CheckBox id=CheckBox1 runat=server/>
    </ItemTemplate>
    </asp:TemplateColumn>
      

  2.   

    給你一個完整的程序:
    <%@ Page Language="vb" Debug="true" %>
    <%@ Import Namespace="System.Data" %>
    <%@ Import Namespace="System.Data.OleDb" %>
    <script language="VB" runat="server">
     dim MyConnection As OleDbConnection Sub Page_Load(s As Object, E As EventArgs)
         MyConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source =" + Server.MapPath(".")+"/db/kk.mdb")
            If Not (IsPostBack) then
            BindDataGrid()
            End If
     End SubSub BindDataGrid()
        dim dadTitles as OleDbDataAdapter
        dim dstTitles as DataSet
        dadTitles=new OleDbDataAdapter("select * from [min] order by id desc",MyConnection)
    dstTitles=new DataSet
    dadTitles.fill(dstTitles)
    MyDataGrid.DataSource=dstTitles
    MyDataGrid.DataBind()
    End SubSub Mydatagrid_PageIndexChanged(s as object,e as DataGridPageChangedEventargs)
        MyDataGrid.CurrentPageIndex=e.newPageIndex
    BindDataGrid()
    End SubSub btnSelect_OnClick(ByVal sender As Object, ByVal e As EventArgs)
        Dim myDataGridItem As DataGridItem
        Dim chkSelected As System.Web.UI.WebControls.CheckBox
        Dim strBoardType As String
        Dim strBoardID As String
     
        lblSelect.Text = "<br>You selected the Following items:<br><br>"
    lblStatus.Text=""
        For Each myDataGridItem In MyDataGrid.Items
            chkSelected = myDataGridItem.FindControl("chkSelection")
            If chkSelected.Checked Then
       lblSelect.visible=true
               strBoardType= CType(myDataGridItem.FindControl("lblBoardType"), Label).Text
               strBoardID = CType(myDataGridItem.FindControl("hdnBoardid"), Label).Text
               lblStatus.Text += "The id is <b>" & strBoardType & "</b>"
               lblStatus.Text += " and the id is <b>" & strBoardID & "</b><br>"
             else
       lblSelect.visible=false
             End If
       Next
    End Sub 
    </script>
    <html>
    <head><title>DataGrid_CheckBox.aspx</title></head>
    <body>
    <form runat="server">
    <input type="button" id="btnSelect" OnServerClick="btnSelect_OnClick" value="SELECT ID" runat="server">
    <asp:DataGrid id="MyDataGrid"
                  width="400"
                  Runat="server"
                  AllowPaging="true" 
      pageSize="5" 
      OnPageIndexChanged="Mydatagrid_PageIndexChanged" 
      cellPadding="3"
      AutoGenerateColumns="false" 
      HeaderStyle-BackColor="#ff0000"
          HeaderStyle-Font-Bold="True"
          HeaderStyle-Font-Name="Verdana"
          HeaderStyle-Font-Size="13px"
          HeaderStyle-ForeColor="#ffffff"
          ItemStyle-BackColor=Beige
          ItemStyle-Font-Name="verdana"
          ItemStyle-Font-Size="13px"
      >
                  <PagerStyle Mode="NumericPages"
                  Font-Bold="true" 
                  BackColor="#FFCC99"
                  HorizontalAlign="right" 
      >    
      </PagerStyle>
         <Columns>
      <asp:TemplateColumn HeaderStyle-HorizontalAlign=Center  HeaderText="X">
        <ItemTemplate>
            <asp:Checkbox ID="chkSelection"  Runat=server />
            <asp:Label ID="hdnBoardid"  Visible="False"  Text='<%# DataBinder.Eval(Container.DataItem, "id") %>' Runat=server />
        </ItemTemplate> 
    </asp:TemplateColumn> 
    <asp:TemplateColumn HeaderText="ID">
    <ItemTemplate>
            <asp:Label ID="lblBoardType"  Text='<%# DataBinder.Eval(Container.DataItem, "id") %>' Runat=server />
    </ItemTemplate> 
    </asp:TemplateColumn> 
      </Columns>
    </asp:DataGrid><asp:Label ID="lblSelect" 
    Font-Name="verdana" 
    Font-Size="12px" 
    ForeColor="#ff0000"
    Runat=server />
    <asp:Label ID="lblStatus" 
    Font-Name="verdana" 
    Font-Size="12px" 
    ForeColor="#ff0000"
    Runat=server />
    </form>
    </body>
    </html>
      

  3.   

    Dim i As Integer
            Dim c As CheckBox
            Dim Pulse As New VisitPulse
            For i = 0 To DG_Pulse.Items.Count - 1
                c = DG_Pulse.Items(i).Cells(0).FindControl("s")
                If c.Checked Then
                    Pulse.ConnString = Session("Constr")
                    Pulse.Delete(DG_Pulse.Items(i).Cells(1).Text)
                End If
            Next
            Bind_Pulse()
      

  4.   

    <asp:TemplateColumn>
    <ItemTemplate>
    <asp:CheckBox id=CheckBox1 runat=server/>
    </ItemTemplate>
    </asp:TemplateColumn>
      

  5.   

    uno(钢盅郭子):我是新手,你能具体讲讲什么是模板列/模板项吗?
      

  6.   

    用模版列:看看帮助文件:aspx文件
    <asp:datagrid id="myGroupData" Runat="server" AutoGenerateColumns="false" DataSource="<%# #CurrentDetail%>">
    <Columns>
    <asp:BoundColumn DataField="STSOrderNo" HeaderText="销售单号">  //列名显示为中文。
    <HeaderStyle HorizontalAlign="Center"></HeaderStyle></asp:BoundColumn>
    <asp:TemplateColumn HeaderText="请选择">     //运用模版列
    <ItemTemplate>
    <asp:CheckBox ID="CheckGroupSTS" Runat="server"   AutoPostBack="False" Checked='<%#(bool)((((DataRowView)Container.DataItem)[2]).ToString().ToUpper()=="TRUE")%>'></asp:CheckBox>    //添加复选框(TRUE为数据库中表示选定的值的设定)
    </ItemTemplate>
    </asp:TemplateColumn>
    </Columns></asp:datagrid >
    cs文件:
    private DataView currentDetail;
    public DataView CurrentDetail    //得到datagrid的datasource的类型
    {
    get {return currentDetail;}
    }private void bindDataGrid()   //数据绑定
    {
    DataBaseInterface myConnection = (DataBaseInterface)ConnectionFactory.ObjFactory(ConfigurationSettings.AppSettings);
    DataSet myDataset = myConnection.Jason_PA_PackModelSelect();
    currentDetail=myDataset.Tables[0].DefaultView;//得到datasource
    myDataGrid.DataBind();
    }
    如果你要查找选定的列做一些操作:
    foreach(DataGridItem dataGridItem in myGroupData.Items)
    {
    if(((CheckBox)dataGridItem.FindControl("CheckGroupSTS")).Checked)
    {
       //如果是选定会做什么操作
    }
    }
      

  7.   

    为datagrid增加一模板列,然后编辑该模板列,拖放checkbox即可