GridView能否在客户端选中某行?并取出选中行数据?请给例子

解决方案 »

  1.   

    GridView的例子参考 GridView 72般绝技
      

  2.   

    可以在GRIDVIEW中添加一模板列,列中放入一checkbox,用循环,检索每行的checkbox状态,看是否选中
      

  3.   


    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="GridView.aspx.cs" Inherits="GridView" MaintainScrollPositionOnPostback="true" %><%@ Import Namespace="System.Web.UI" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>无标题页</title>
    </head><script>
    function SelectAll(id)
    {
        var gv = document.getElementById("GridView1");
        var bs = gv.getElementsByTagName("input");
        for(var i=0;i<bs.length;i++)
        {
            if(bs[i].type=="checkbox")
            {
                bs[i].checked=id.checked;
            }
        }
    }
    function SelectAny(ck)  //这个函数可以取到
    {
        if(ck.checked)
        {
            var gv = document.getElementById("GridView1");
            var rows = gv.getElementsByTagName("tr");
            for(var i =0;i<rows.length;i++)
            {
                var cid = rows[i].cells[0].getElementsByTagName("input");
                if(cid.length>0)
                {
                    if(cid[0].type=="checkbox" && cid[0].id==ck.id)
                    {
                        //alert("你现在选中的是第"+i+"行!");
                        var cells = rows[i].getElementsByTagName("td");
                        for(var t=0;t<cells.length;t++)
                        {
                            alert(cells[t].innerText);//弹出选中行每列的文本。
                        }
                    }
                }
            }
        }
    }</script><body>
        <form id="form1" runat="server">
            <div>
                <asp:GridView ID="GridView1" runat="server" AllowPaging="True" AutoGenerateColumns="False">
                    <Columns>
                        <asp:TemplateField HeaderText="全选">
                            <HeaderTemplate>
                                <asp:CheckBox ID="CheckBox1" runat="server" onclick="javascript:SelectAll(this);" />
                            </HeaderTemplate>
                            <ItemTemplate>
                                <asp:CheckBox ID="CheckBox2" runat="server" onclick="javascript:SelectAny(this);"/>
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:BoundField DataField="Name" HeaderText="姓名" SortExpression="Name" HtmlEncode="False" NullDisplayText="&lt;font color='red'&gt;暂缺&lt;/font&gt;"/>
                        <asp:BoundField DataField="Sex" HeaderText="性别" SortExpression="Sex" />
                        <asp:BoundField DataField="Date" HeaderText="日期" SortExpression="Date" DataFormatString="{0:yyyy-MM-dd hh}"
                            HtmlEncode="False" />
                        <asp:BoundField DataField="Age" HeaderText="年龄" SortExpression="Age" />
                        <asp:BoundField DataField="Memo" HeaderText="工资" SortExpression="Memo" />
                   </asp:GridView>
              
            </div>
        </form>
    </body>
    </html>
      

  4.   


    前面的都一样..取值的时候没那么麻烦直接取就可以了
     for (int i = 0; i < this.GridView1.Rows.Count; i++)
            {
                bool isChecked = ((CheckBox)GridView1.Rows[i].FindControl("chkSelect")).Checked;
                if (isChecked)
                {
    GridView1.Rows[i].Cells[0].Text;
    GridView1.Rows[i].Cells[1].Text;
     GridView1.Rows[i].Cells[2].Text;   
                }        }