这个问题已经发过两次贴了,但方法有好几个,而且都是c#,我用的vb所以一直到现在还没弄明白,我再仔细发一次,希望能得到解决,不管c#,vb,最好能给段代码说明一下,非常感谢! 非常急!
问题1:原来的时候我是用  右键--编辑列,加了个选择按钮,改名“查看”请问在这种情况下应该怎么做,代码应该怎么写?
问题2:现在改成自定义列,按钮“查看”,这种情况下又该怎么做,代码怎么写?
实现功能,当点击“查看”的时候,上面的控件里显示数据库中该条记录的内容
我在网上看过好多,大概都是先取行号(怎么取),然后读取列值,这么做不用再重新读取数据库了吗? <asp:GridView  ID="gv1" datakeynames="id" AllowPaging="True" AutoGenerateColumns="False" PageSize="5" OnPageIndexChanging="gv1_pageIndexChanging" runat="server" style="text-align: center; font-size: 10pt;" CellPadding="4" ForeColor="#333333" GridLines="None" Width="485px" >
   <Columns >
   <asp:BoundField DataField ="id" HeaderText ="编号" />
   <asp:BoundField DataField="title" HeaderText ="标题" />
   <asp:BoundField DataField="name" HeaderText="发布者" />
   <asp:BoundField DataField ="publishtime" HeaderText="发布时间" />
   <asp:TemplateField>
   <ItemTemplate><asp:Button Text="查看" runat="server" /></ItemTemplate>
   </asp:TemplateField>   
   </Columns>
       <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
       <RowStyle BackColor="#EFF3FB" />
       <EditRowStyle BackColor="#2461BF" />
       <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
       <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
       <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
       <AlternatingRowStyle BackColor="White" />    
   </asp:GridView>

解决方案 »

  1.   

    <asp:Button  ID="lbEdit" runat="server"  CommandName="btnEdit" Text="查看明细" CommandArgument='<%#Bind("XXX")%>' />
    XXX代表的是一条记录的主键,可能通过这些这主键从数据源查找数据啊
      

  2.   

    用模板,然后在模板列里面写<a herf="default.aspx?id=<%#bind("id")%>">查看</a>
    然后在跳转的页面里request("id"),就能取到你要传递的信息的ID,然后根据这个ID去检索信息
      

  3.   

    1.在模板列加个隐藏域·
    <ItemTemplate>
     <asp:Button Text="查看" runat="server" ID="btnView" OnClick="btnView_Click" />
     <asp:HiddenField ID="hidId" runat="server" Value='<%#Eval("id")%>' />
    </ItemTemplate>2.CS代码:protected void btnView_Click(object sender,EventArgs e)
    {
      Button btnView=(Button)sender;
      int curId=0;
      HiddenField hidId=(HiddenField)btnView.Parent.FindControl("hidId");
      if(hidId!=null)
      {
        curId=Convert.ToInt32(hidId.Value);    
      }
      if(curId>0) //curId即为当前查看行的Id
      {
          using(SqlDataReader sdr=DBHelper.ExecuteReader("SELECT * FROM Table WHERE Id=@Id",new SqlParameter("@Id",curId)))
          {
              if(sdr!=null && sdr.Read())
              {
                 txtTitle.Text=sdr["Title"].TOString();
                 .....
                 .....
              }
          }   
      }
    }
      

  4.   

    用模板列。
    如代码:
    <ItemTemplate>
    <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False" CommandName="Select"
    CommandArgument="<%#GridView1.Rows.Count%>" Text="单击" ></asp:LinkButton>
    </ItemTemplate>
    注意的是CommandName用来判断是那一列是你单击的。CommandArgument是用来取行号的。Convert .ToInt32 (e.CommandArgument )].//取得行号
    this.GridView1.Rows[Convert .ToInt32 (e.CommandArgument )].Cells[1].Text.ToString();//取得行号对应的第2个格子的值。(也许是主键。)
     if (e.CommandName == "Select"){//用来判断是点击的那一列。
    }
    试试、
      

  5.   

    <asp:TemplateField> 
       <asp:Button  ID="lbEdit" runat="server"  CommandName="btnlook" Text="查看明细" CommandArgument=' <%#Bind("XXX")%>' /> 
    </asp:TemplateField>
    前台有id绑定
    然后双击出来这个事件.RowCommand事件.
        protected void gdv_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            try
            {
                DonationDataAccess.UserDAO dao = new DonationDataAccess.UserDAO();
                if (e.CommandName == "btnlook")
                {
                    Response.Redirect("~/test.aspx?id=" + Convert.ToInt32(e.CommandArgument));
                }
            }
            catch (Exception ex)
            {        }
        }
    后台有commandname,commandArgument
    而且这只是查看吗?直接一个连接link到另一个页面也可以阿
      

  6.   

    你用csdn里的这种效果不可以吗?
    你点下你自己的头像看看。
      

  7.   

    我觉得用ajax挺好,可以采取弹出层效果那种
      

  8.   

    问题太多了,给你解决一个吧,取行号的问题,我看你已经设置DataKeyNames了,我理解的取行号就是取这个值   
    gv1.DataKeys[索引].Value.ToString()