请问我页面上有一个GridView。
我想实现鼠标单击某一栏,将某一栏的数据填写到对应的textbox里。请问用javascript怎么实现最好是代码~

解决方案 »

  1.   

    你看看jQuery1.2API.chm帮助文档
    没代码怎么能空写
      

  2.   

    这样子有点困难, 能在GridView的每行加个CheckBox么?
      

  3.   

    如果能加个Checkbox的话, 就容易多了。
      

  4.   

    下个JQuery,运行网站,右键查看源代码,看源代码中的节点进行处理
      

  5.   

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="gridSample.aspx.cs" Inherits="WebApp.gridSample" %><!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>
        <style type="text/css">
            .trover
            {
                background-color: Green;
            }
            .trout
            {
                background-color: White;
            }
        </style>    <script type="text/javascript">
            function trover(obj) {
                if (obj.tagName == "TR") {
                    obj.className = "trover";
                }
            }        function trout(obj) {
                if (obj.tagName == "TR") {
                    obj.className = "trout";
                }
            }        function filldata(obj) {
                if (obj.tagName == "TD") {
                    document.getElementById("txt").value = obj.innerHTML;
                }
            }
        </script></head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:GridView ID="GridView1" runat="server">
            </asp:GridView>
            <input type="text" id="txt" />
        </div>
        </form>
    </body>
    </html>using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Data;namespace WebApp {
        public partial class gridSample : System.Web.UI.Page {
            protected void Page_Load(object sender, EventArgs e) {
                DataTable dt = new DataTable();
                dt.Columns.Add("A", typeof(string));
                dt.Columns.Add("B", typeof(string));
                dt.Columns.Add("C", typeof(string));
                dt.Columns.Add("X", typeof(int));
                dt.Columns.Add("Y", typeof(int));
                dt.Columns.Add("Time", typeof(DateTime));            dt.Rows.Add(new object[] { "a", "b", "c", 1, 100, new DateTime(2010, 10, 11, 8, 0, 0, 0) });
                dt.Rows.Add(new object[] { "a", "b", "c", 1, 150, new DateTime(2010, 10, 11, 8, 15, 0, 0) });
                dt.Rows.Add(new object[] { "a", "b", "d", 1, 120, new DateTime(2010, 10, 11, 8, 20, 0, 0) });
                dt.Rows.Add(new object[] { "a", "b", "c", 1, 200, new DateTime(2010, 10, 11, 8, 40, 0, 0) });
                dt.Rows.Add(new object[] { "a", "b", "c", 1, 130, new DateTime(2010, 10, 11, 9, 5, 0, 0) });            //a |b| c|... | 1 |180|9:30|
                dt.Rows.Add(new object[] { "a", "b", "c", 1, 180, new DateTime(2010, 10, 11, 9, 30, 0, 0) });
                //添加辅助字段
                dt.Columns.Add("T", typeof(string));
                foreach (DataRow r in dt.Rows) {
                    r["T"] = DateTime.Parse(r["Time"].ToString()).ToString("yyMMddHH");
                }            DataTable dtClone = dt.Clone();
                foreach (DataRow r in dt.Rows) {
                    DataRow[] rows = dtClone.Select(string.Format("A='{0}' and B='{1}' and C='{2}' and T='{3}'", r["A"], r["B"], r["C"], r["T"]));
                    if (rows.Length == 0) {
                        dtClone.ImportRow(r);
                    }
                    else {
                        int x = 0, y = 0;                    int.TryParse(rows[0]["X"].ToString(), out x);
                        int.TryParse(rows[0]["Y"].ToString(), out y);
                        x += int.Parse(r["X"].ToString());
                        y += int.Parse(r["Y"].ToString());
                        rows[0]["X"] = x;
                        rows[0]["Y"] = y;
                    }
                }
                GridView1.DataSource = dtClone;
                GridView1.RowCreated += new GridViewRowEventHandler(GridView1_RowCreated);
                this.DataBind();
            }        void GridView1_RowCreated(object sender, GridViewRowEventArgs e) {
                e.Row.Attributes.Add("onmouseover", "trover(this)");
                e.Row.Attributes.Add("onmouseout", "trout(this)");
                foreach (TableCell ctl in e.Row.Cells) {
                    ctl.Attributes.Add("onclick", "filldata(this)");
                }
            }
        }    public struct areamsgnode {
            public string ption;
            public Int64 pointbegin;
            public Int64 pointend;
            public Int64 size;
        }
    }
      

  6.   


    <script type="text/javascript" language=javascript>
            function show(obj) {
                document.getElementById("TextBox1").value = obj.innerText;
            }
        </script>
    <asp:GridView ID="GridView1" DataKeyNames="url" runat="server" OnRowCommand="GridView1_RowCommand" AutoGenerateColumns="False"
                OnSelectedIndexChanged="GridView1_SelectedIndexChanged" 
                onrowdeleting="GridView1_RowDeleting">
                <Columns>
                    <asp:TemplateField>
                        <ItemTemplate>
                            <span onclick="show(this);"><%#Eval("url") %></span>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:CommandField ShowDeleteButton="True" />
                </Columns>
            </asp:GridView>
            <asp:TextBox ID="TextBox2" runat="server" onclick="alert('1');"></asp:TextBox>
      

  7.   


    <html>
    <head>
        <title>无标题页</title>
        <script type="text/javascript" language="javascript">
    window.onload=function(){
    var tds = document.getElementById("GridView1").getElementsByTagName("td");//gridview在客户端生成html标签是table,每一行tr,每一行中的每一列是都是td,这句js讲客户端中的所有td取出来。楼主在用的时候("GridView1")这句里面的id要替换成"<%=服务器控件id.ClientId=%>",我这没vs,clientid这个属性可能会有拼写错误,你在vs里面打的时候注意一下
    //下面这个循环是给每一个td绑定一个click事件,当某一个td被点击后,那么就将该td所属的tr(也就是这一行)里的所有td的值取出来(这里有点绕,其实就是把与被点击的td同属于一行的所有数据取出来),并放在div1里面
    for(var i = 0;i < tds.length;i++){
    tds[i].onclick=function(){
    var text="";
    //(event.srcElement||event.target)这个取的是事件源,就是谁调用这个事件,就返回谁.这里返回的是被点击的td,parentNode返回他的父节点,就是tr,把tr里面所有的td取出来。
    var tds = (event.srcElement||event.target).parentNode.getElementsByTagName("td");
    //循环把所有td里的数据拉出来,然后放进div1里面
    for(var j = 0;j < tds.length;j++){
    text+=tds[j].innerText+" ";
    }
    document.getElementById("div1").innerText=text;
    }
    }
    }
        </script>
    </head><body>
    <table cellspacing="0" rules="all" border="1" id="GridView1" style="border-collapse:collapse;">
    <tr>
    <th scope="col">hisbannerid</th><th scope="col">hisbannertext</th><th scope="col">hisbannerurl</th><th scope="col">hisbanneren</th><th scope="col">hisbannersys</th>
    </tr><tr id="tr1">
    <td>1</td><td>资料研究                                          </td><td>research/default.asp                              </td><td><span disabled="disabled" title="hisbanneren"><input id="GridView1_ctl02_ctl00" type="checkbox" name="GridView1$ctl02$ctl00" checked="checked" disabled="disabled" /></span></td><td><span disabled="disabled" title="hisbannersys"><input id="GridView1_ctl02_ctl01" type="checkbox" name="GridView1$ctl02$ctl01" disabled="disabled" /></span></td>
    </tr><tr>
    <td>2</td><td>研究专题                                          </td><td>theme/default.asp                                 </td><td><span disabled="disabled" title="hisbanneren"><input id="GridView1_ctl03_ctl00" type="checkbox" name="GridView1$ctl03$ctl00" checked="checked" disabled="disabled" /></span></td><td><span disabled="disabled" title="hisbannersys"><input id="GridView1_ctl03_ctl01" type="checkbox" name="GridView1$ctl03$ctl01" checked="checked" disabled="disabled" /></span></td>
    </tr><tr>
    <td>3</td><td>资料检索                                          </td><td>search/default.asp                                </td><td><span disabled="disabled" title="hisbanneren"><input id="GridView1_ctl04_ctl00" type="checkbox" name="GridView1$ctl04$ctl00" checked="checked" disabled="disabled" /></span></td><td><span disabled="disabled" title="hisbannersys"><input id="GridView1_ctl04_ctl01" type="checkbox" name="GridView1$ctl04$ctl01" disabled="disabled" /></span></td>
    </tr><tr>
    <td>4</td><td>关于我们                                          </td><td>showtheme.asp?tid=101                             </td><td><span disabled="disabled" title="hisbanneren"><input id="GridView1_ctl05_ctl00" type="checkbox" name="GridView1$ctl05$ctl00" checked="checked" disabled="disabled" /></span></td><td><span disabled="disabled" title="hisbannersys"><input id="GridView1_ctl05_ctl01" type="checkbox" name="GridView1$ctl05$ctl01" disabled="disabled" /></span></td>
    </tr><tr>
    <td>5</td><td>系统管理                                          </td><td>sysman/default.asp                                </td><td><span disabled="disabled" title="hisbanneren"><input id="GridView1_ctl06_ctl00" type="checkbox" name="GridView1$ctl06$ctl00" checked="checked" disabled="disabled" /></span></td><td><span disabled="disabled" title="hisbannersys"><input id="GridView1_ctl06_ctl01" type="checkbox" name="GridView1$ctl06$ctl01" checked="checked" disabled="disabled" /></span></td>
    </tr>
    </table>
    <div id="div1"></div>
    </body>
    </html>
    纯手工js,我自己也找了很多资料,总算是弄出来了
    楼主只要看上面的js就可以了,下面的table就是gridView在客户端生成的html。因为只有td绑定了click事件所以点击头部是不会把头部信息都打印出来的。
      

  8.   


    我加了个checkbox 绑定数据的时候出错了。。
    前台页面添加了个 <asp:TemplateField HeaderText="Edit">
        <ItemTemplate>
        <asp:CheckBox  ID="cb1"  runat ="server"/>
        </ItemTemplate>
      </asp:TemplateField>
    为什么绑定数据的时候会报
    Callbacks are not supported on TemplateField because some controls cannot update properly in a callback.  Turn callbacks off on 'GridView1'.
    这个错
    我想实现的是点击某一条数据的CheckBox,数据自动填充到对应的textbox里去。。