单击gridview一行后再弹出一个gridview显示表里的信息怎么弄,比如点击图片上的第一行后触发事件再显示一个信息。
e.Row.Attributes.Add("onclick","getdata()"); 
getdata()是我定义的一个方法,上面的实现不了,说缺少对象,怎么弄啊?还是上面的方法根本就实现不了这样的功能呢??

解决方案 »

  1.   

    gridview 没有onclick事件吧?你应该在ItemDateBound 绑定gridview1信息的Id
     if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
            {        if (e.CommandName == "你设定的名字")
            {
               int cwId = int.Parse(e.CommandArgument.ToString());
               //开始写你要弹框 另一个页面的gridview2        }
    }
      

  2.   

    不知道你的数据库是什么样的数据,我随便找一个例子吧
    首先在gridview里面定义好自己想要显示的字段如下面的图前台代码就像这样,我这是拿自己的项目代码哦,都类似你可以改改大同小异。
    前台:  <asp:GridView ID="gvMusic" runat="server" AutoGenerateColumns="False"
                                Width="645px" OnRowCommand="gvMusic_RowCommand" >
                                        <Columns>
                                            <asp:TemplateField HeaderText="选择">
                                                <ItemTemplate>
                                                    <asp:CheckBox ID="CheckBox1" runat="server" />
                                                </ItemTemplate>
                                            </asp:TemplateField>
                                            <asp:BoundField DataField="musicName" HeaderText="歌曲名称" />
                                            <asp:BoundField DataField="singerName" HeaderText="歌手" />
                                            <asp:BoundField DataField="specialName" HeaderText="专辑名称" />
                                            <asp:BoundField DataField="auditionSum" HeaderText="试听次数" />
                                            <asp:BoundField DataField="downSum" HeaderText="下载次数" />
                                            <asp:BoundField DataField="fileSize" HeaderText="文件大小" />
                                            <asp:TemplateField HeaderText="试听">
                                                <ItemTemplate>
                                                      <a   onclick="window.open('playMusic.aspx?id=<%#Eval("id")%>','','width=380,height=260');" href="#" ><img border="0" src="images/shit.GIF" width="16" height="16" /></a>
                                                </ItemTemplate>
                                            </asp:TemplateField>
                                            <asp:TemplateField HeaderText="下载">
                                                <ItemTemplate>
                                                    <asp:LinkButton ID="likbtnDown" runat="server" CommandName="down" Font-Underline="False" CommandArgument='<%# Eval("id") %>'><img border="0" src="images/xz.gif" width="16" height="16" /></asp:LinkButton>
                                                </ItemTemplate>
                                            </asp:TemplateField>
                                        </Columns>
                                        <RowStyle CssClass="huise1" />
                                        <HeaderStyle CssClass="huise1" />
                                    </asp:GridView>//////后台 protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                //调用自定义bindGV方法,显示歌曲的详细信息
             bindGV();
                bindAudition();
            }       protected void bindGV()
        {
            //创建SQL语句,该语句用来查询歌曲的详细信息
            string sqlSel = "select * from tb_musicInfo where musicType=" + Request["id"].ToString();
            //设置GridView控件的数据源
            gvMusic.DataSource = dataOperate.getRows(sqlSel);
            //设置GridView控件的主键
            gvMusic.DataKeyNames = new string[] { "id" };
            //绑定GridView控件
            gvMusic.DataBind();
        }拿下载的代码看吧,
    <asp:TemplateField HeaderText="下载">
                                                <ItemTemplate>
                                                    <asp:LinkButton ID="likbtnDown" runat="server" CommandName="down" Font-Underline="False" CommandArgument='<%# Eval("id") %>'><img border="0" src="images/xz.gif" width="16" height="16" /></asp:LinkButton>
    我们加入的是一个ItemTemplate>模版在里面放入的是一个LinkButton控件后台一定要注意绑定id作为参数,gvMusic.DataKeyNames = new string[] { "id" };这样就可以当点击某行时进行传参了,下面是传参获取的代码
       //实现下载操作
        protected void gvMusic_RowCommand(object sender, GridViewCommandEventArgs e)
        {
         
            //判断是否为下载操作
           if (e.CommandName == "down")
            {
               //获取歌曲的id 
                string id = e.CommandArgument.ToString();
               //创建SQL语句,查询歌曲的详细信息
                string sqlSel = "select musicPath from tb_musicInfo where id=" + id;          
                //创建SQL语句,更新歌曲的下载次数
                string sqlUpdate = "update tb_musicInfo set downSum=downSum+1 where id=" + id; ;
               //执行SQL语句
                dataOperate.execSql(sqlUpdate);
               //调用自定义downFile方法实现歌曲的下载操作
                downFile(dataOperate.getTier(sqlSel));        }
        }这个说明一点e.CommandName == "down"这段,我们是有前提的,我在加入ItemTemplate>模版在里面放入的是一个LinkButton控件的时候顺便要给它起个命令名,就是down,这样就可以判断了
    我们再通入参入的id来进行你想要的第二个gridview进行数据的查询绑定就打到你想的效果了
    举个例子我的项目里的绑定  
    protected void bindAudition()
        {
            string sqlSel = "select top 10 * from tb_musicInfo order by auditionSum desc";
            gvAudition.DataSource = dataOperate.getRows(sqlSel);
            gvAudition.DataKeyNames = new string[] { "id" };
            gvAudition.DataBind();
        }好了就OK了,思路还是很简单的,希望你自己修改下就可以了,大同小异.
      

  3.   

    应该是你的getdata()方法存在问题  这个getdata是个js函数,看你是不是获取控件ID的时候出现的问题
      

  4.   

    如果你很想用你自己的方法也是可以的
    你的代码应该是这样的
    (LinkButton)e.Row.FindControl("lkbtn").Attributes.Add("onclick","getdata()"); 
    这样也可以给某行的控件加上属性 ,
    你的那e.Row.Attributes.Add("onclick","getdata()"是给哪个行的东西加的呢,所以会提示缺少对象