本人有个表datagrid1,显示物品,如糖、瓜子、苹果等产品的名称,双击某项后,到该页的另一个表datagrid2中显示详细信息,如点苹果,则显示苹果的详细信息,这里就要在datagrid1的双击事件里的主键值传到第二个表中,也就是说对datagrid1双击事件写入代码,求教高手给出解答的办法?在线等!!!!谢谢。

解决方案 »

  1.   

    是不是双击就显示该条记录的详细信息?不必另一个datagrid吧?!
      

  2.   

        <form id="form1" runat="server">
        <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
            ConnectionString="<%$ ConnectionStrings:NLBSConnectionString %>" 
            SelectCommand="SELECT [cat_id], [cat_name], [cat_order] FROM [blog_Category]">
        </asp:SqlDataSource>
        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
            DataKeyNames="cat_id" DataSourceID="SqlDataSource1">
            <Columns>
                <asp:TemplateField><ItemTemplate>
                <a href="javascript:void(0)" ondblclick="test(<%# Eval("cat_id") %>)">xzxx</a>
                </ItemTemplate></asp:TemplateField>
                <asp:BoundField DataField="cat_id" HeaderText="cat_id" InsertVisible="False" 
                    ReadOnly="True" SortExpression="cat_id" />
                <asp:BoundField DataField="cat_name" HeaderText="cat_name" 
                    SortExpression="cat_name" />
                <asp:BoundField DataField="cat_order" HeaderText="cat_order" 
                    SortExpression="cat_order" />
            </Columns>
        </asp:GridView>
        <script>
        function test(id)
        {
        window.location.href="WebForm2.aspx?id="+id;
        }
        </script>
        <asp:DetailsView ID="DetailsView1" runat="server"
            DataSourceID="SqlDataSource2" Height="50px" Width="125px">
        </asp:DetailsView>
        <asp:SqlDataSource ID="SqlDataSource2" runat="server" 
            ConnectionString="<%$ ConnectionStrings:NLBSConnectionString %>" 
            SelectCommand="SELECT * FROM [blog_Category] WHERE ([cat_id] = @cat_id)">
            <SelectParameters>
            <asp:QueryStringParameter  DefaultValue="0" QueryStringField="id"  Type="Int32" 
                    Name="cat_id" />
            </SelectParameters>
        </asp:SqlDataSource>
        </form>
    datagrid同理,使用ondblclick事件
      

  3.   

    文件名:Default9.aspx
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default9.aspx.cs" Inherits="Default9" %><!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">
        #tbDetal td{border:solid 1px orange}
        #tbDetal{border:solid 1px orange}
        .hideClm{display:none}
        </style>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
        <asp:DataGrid ID="grid1" runat="server" AutoGenerateColumns="False">
            <Columns>
                <asp:BoundColumn DataField="name" HeaderText="Name"></asp:BoundColumn>
                <asp:BoundColumn DataField="price" HeaderText="Price"></asp:BoundColumn>
                <asp:BoundColumn DataField="quantity" HeaderStyle-CssClass="hideClm"></asp:BoundColumn>
                <asp:BoundColumn DataField="sum" HeaderStyle-CssClass="hideClm"></asp:BoundColumn>
                <asp:BoundColumn DataField="re" HeaderStyle-CssClass="hideClm"></asp:BoundColumn>
            </Columns>
        </asp:DataGrid>
        <br />
        <table id="tbDetal" style="width:300px">
        <tr><td>Name</td><td id="clName">hi</td></tr>
        <tr><td>Price</td><td id="clPrice">hi</td></tr>
        <tr><td>Quantity</td><td id="clQuantity">hi</td></tr>
        <tr><td>Sum</td><td id="clSum">hi</td></tr>
        <tr><td>Re</td><td id="clRe">hi</td></tr></table>
        </div>
        </form>
        <script type="text/javascript">
        function $(sElmID){return document.getElementById(sElmID);}
        var isIe=window.navigator.appName.indexOf("Netscape") == -1?true:false;
        var oRows=$("<%=grid1.ClientID %>").rows;
        function initRow_DBClick(){
            for(var i=1;i<oRows.length;++i){
                oRows[i].ondblclick=new Function("onRow_DBClick(this)");
            }
        }
        
        function onRow_DBClick(oSrc){
            var oCells=oSrc.getElementsByTagName("td");
            $("clName").innerHTML=isIe?oCells[0].innerText:oCells[0].textContent;
            $("clPrice").innerHTML=isIe?oCells[1].innerText:oCells[1].textContent;
            $("clQuantity").innerHTML=isIe?oCells[2].innerText:oCells[2].textContent;
            $("clSum").innerHTML=isIe?oCells[3].innerText:oCells[3].textContent;
            $("clRe").innerHTML=isIe?oCells[4].innerText:oCells[4].textContent;
        }
        initRow_DBClick();
        </script>
    </body>
    </html>
    using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;public partial class Default9 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                grid1.DataSource = GenerateTable();
                grid1.DataBind();
                grid1.Columns[2].ItemStyle.CssClass = "hideClm";
                grid1.Columns[3].ItemStyle.CssClass = "hideClm";
                grid1.Columns[4].ItemStyle.CssClass = "hideClm";
            }
            
        }
        private DataTable GenerateTable()
        {
            DataTable dt = new DataTable();
            dt.Columns.Add("Name", typeof(string));
            dt.Columns.Add("Price", typeof(double));
            dt.Columns.Add("Quantity", typeof(int));
            dt.Columns.Add("Sum", typeof(double));
            dt.Columns.Add("Re", typeof(string));
            DataRow row;
            Random rnd = new Random();
            for (int i = 1; i != 10; ++i)
            {            row = dt.NewRow();
                row[0] = string.Format("Product_{0}", i);
                row[1] = rnd.Next(1, 273) / 2.0;
                row[2] = rnd.Next(0, 87);
                row[3] = (double)row[1] * (int)row[2];
                row[4] = string.Format("re here for row {0}", i);
                dt.Rows.Add(row);
            }        return dt;
        }}
      

  4.   

    文件名:Default9.aspx
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default9.aspx.cs" Inherits="Default9" %><!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">
        #tbDetal td{border:solid 1px orange}
        #tbDetal{border:solid 1px orange}
        .hideClm{display:none}
        </style>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
        <asp:DataGrid ID="grid1" runat="server" AutoGenerateColumns="False">
            <Columns>
                <asp:BoundColumn DataField="name" HeaderText="Name"></asp:BoundColumn>
                <asp:BoundColumn DataField="price" HeaderText="Price"></asp:BoundColumn>
                <asp:BoundColumn DataField="quantity" HeaderStyle-CssClass="hideClm"></asp:BoundColumn>
                <asp:BoundColumn DataField="sum" HeaderStyle-CssClass="hideClm"></asp:BoundColumn>
                <asp:BoundColumn DataField="re" HeaderStyle-CssClass="hideClm"></asp:BoundColumn>
            </Columns>
        </asp:DataGrid>
        <br />
        <table id="tbDetal" style="width:300px">
        <tr><td>Name</td><td id="clName">hi</td></tr>
        <tr><td>Price</td><td id="clPrice">hi</td></tr>
        <tr><td>Quantity</td><td id="clQuantity">hi</td></tr>
        <tr><td>Sum</td><td id="clSum">hi</td></tr>
        <tr><td>Re</td><td id="clRe">hi</td></tr></table>
        </div>
        </form>
        <script type="text/javascript">
        function $(sElmID){return document.getElementById(sElmID);}
        var isIe=window.navigator.appName.indexOf("Netscape") == -1?true:false;
        var oRows=$("<%=grid1.ClientID %>").rows;
        function initRow_DBClick(){
            for(var i=1;i<oRows.length;++i){
                oRows[i].ondblclick=new Function("onRow_DBClick(this)");
            }
        }
        
        function onRow_DBClick(oSrc){
            var oCells=oSrc.getElementsByTagName("td");
            $("clName").innerHTML=isIe?oCells[0].innerText:oCells[0].textContent;
            $("clPrice").innerHTML=isIe?oCells[1].innerText:oCells[1].textContent;
            $("clQuantity").innerHTML=isIe?oCells[2].innerText:oCells[2].textContent;
            $("clSum").innerHTML=isIe?oCells[3].innerText:oCells[3].textContent;
            $("clRe").innerHTML=isIe?oCells[4].innerText:oCells[4].textContent;
        }
        initRow_DBClick();
        </script>
    </body>
    </html>
    using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;public partial class Default9 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                grid1.DataSource = GenerateTable();
                grid1.DataBind();
                grid1.Columns[2].ItemStyle.CssClass = "hideClm";
                grid1.Columns[3].ItemStyle.CssClass = "hideClm";
                grid1.Columns[4].ItemStyle.CssClass = "hideClm";
            }
            
        }
        private DataTable GenerateTable()
        {
            DataTable dt = new DataTable();
            dt.Columns.Add("Name", typeof(string));
            dt.Columns.Add("Price", typeof(double));
            dt.Columns.Add("Quantity", typeof(int));
            dt.Columns.Add("Sum", typeof(double));
            dt.Columns.Add("Re", typeof(string));
            DataRow row;
            Random rnd = new Random();
            for (int i = 1; i != 10; ++i)
            {            row = dt.NewRow();
                row[0] = string.Format("Product_{0}", i);
                row[1] = rnd.Next(1, 273) / 2.0;
                row[2] = rnd.Next(0, 87);
                row[3] = (double)row[1] * (int)row[2];
                row[4] = string.Format("re here for row {0}", i);
                dt.Rows.Add(row);
            }        return dt;
        }}
      

  5.   

    忘了个隐藏,将onRow_DBClick方法改一下    function onRow_DBClick(oSrc){
            var oCells=oSrc.getElementsByTagName("td");
            $("clName").innerHTML=isIe?oCells[0].innerText:oCells[0].textContent;
            $("clPrice").innerHTML=isIe?oCells[1].innerText:oCells[1].textContent;
            $("clQuantity").innerHTML=isIe?oCells[2].innerText:oCells[2].textContent;
            $("clSum").innerHTML=isIe?oCells[3].innerText:oCells[3].textContent;
            $("clRe").innerHTML=isIe?oCells[4].innerText:oCells[4].textContent;
            $("<%=grid1.ClientID %>").style.visibility="hidden";
        }