问题:
   home.aspx页面中有如图的gridview控件,   
   
   它和数据库关联,通过点击“详细信息”,页面可以转到details.aspx页面   现在我想在点击的同时,传个序号参数给details.aspx页面,该参数用session["squ"]保存,我该怎么写代码!
======================================================================================================
下面是我用request传该参数的代码,但是这样写有个致命问题,所以我想改用session,大侠指教!!!    <asp:GridView ID="NewsList" runat="server" AllowSorting="True" 
            AutoGenerateColumns="false" Height="181px" 
            onselectedindexchanged="NewsList_SelectedIndexChanged1" Width="680px">
            <Columns>
                <asp:BoundField DataField="序号" HeaderText="序号" ItemStyle-Width="60px"/>
                <asp:BoundField DataField="主题" HeaderText="主题" ItemStyle-Width="300px" />
                <asp:BoundField DataField="日期" HeaderText="日期" DataFormatString="{0:yyyy-MM-dd}" ItemStyle-Width="120px"  />
                <asp:BoundField DataField="关键字" HeaderText="关键字" ItemStyle-Width="100px"/>
------------------------------------------------------------------------------------------------------------- 主要是在这段      
             <asp:HyperLinkField DataNavigateUrlFields="序号" 
                    DataNavigateUrlFormatString="details.aspx?序号={0}" DataTextFormatString="详细信息" 
                    HeaderText="详细信息" Text="详细信息" ItemStyle-Width="100px"/>
-------------------------------------------------------------------------------------------------------------
            </Columns>
            <EditRowStyle BorderStyle="Dashed" />
        </asp:GridView>

解决方案 »

  1.   

    <asp:HyperLinkField DataNavigateUrlFields="序号"  
      DataNavigateUrlFormatString="details.aspx?序号={0}" DataTextFormatString="详细信息"  
      HeaderText="详细信息" Text="详细信息" ItemStyle-Width="100px" CommandArgument='<%# Eval("序号")%>'/>然后在你的GridView的RowCommand事件里先取出CommandArgument的值,然后保存在Session中即可。
    Session["squ"] = e.CommandArgument;
    搞定!
      

  2.   

    这一列你可以使用模板列
    <asp:TemplateField>
      <ItemTemplate>
         <asp:HyperLink ID="HL" runat="server" NavigateUrl='details.aspx?序号='<%#Eval("序号")%>' CommandArgument='<%# Eval("序号")%>'/> 
      </ItemTemplate>
    </asp:TemplateField>
      

  3.   

    CommandArgument是按钮的属性吧,用linkbutton吧
      

  4.   

    对,HyperLink没有CommandArgument属性,晕倒。用LinkButton,将原来的NavigateUrl改成PostBackUrl,试试看。
      

  5.   

    用linkbutton才能触发事件,才能在session中传递,不然用link按钮或者a标签的话,只能在url中传参数吧,这时候要用session好像挺难的
      

  6.   

    用get方式传参数简单<a href="details.aspx?序号=<%# Eval("序号")%>">详细信息</a>
      

  7.   

    用用LinkButton 可以搞定的 
      

  8.   


    <asp:CommandField ShowEditButton="True" EditText="详细信息"/>
    CommandField --可以获得参数吗?
      

  9.   


    <ItemTemplate>
                                    <asp:HyperLink ID="tt" NavigateUrl='<%#"details.aspx?序号="+DataBinder.Eval(Container.DataItem,"序号")%>' runat="server"><%# GetCut(Eval("这里显示标题")) %></asp:HyperLink>
                                </ItemTemplate>
    //为防止标题过长
    public string GetCut(object obj)
            {
                string str = obj.ToString();
                if (str.Length > 3)                   //只显示3个字符和一个…,根据你自己的需求改吧
                {
                    return str.Substring(0, 3) + "...";
                }
                else
                {
                    return str;
                }
            }
      

  10.   

    <asp:HyperLinkField ID = "Hype"  
      NavigateUrl='<%#Evak("序号","~/details.aspx?squ={0}")%>'>详细信息</asp:HyperLinkField>
      

  11.   

    <asp:HyperLink ID="HL" runat="server" NavigateUrl='details.aspx?序号='<%#Eval("序号")%>' CommandArgument='<%# Eval("序号")%>'/>  Session["squ"] = e.CommandArgument;
      

  12.   

    HyperLink 没有CommandArgument!!!
      

  13.   

    <asp:TemplateField>
      <ItemTemplate>
      <asp:LinkButton ID="HL" runat="server" PostBackUrl='details.aspx?序号='<%#Eval("序号")%>' CommandArgument='<%# Eval("序号")%>'/>  
      </ItemTemplate>
    </asp:TemplateField>
      

  14.   

    你试试,这下应该可以了吧,如果不行的话,关于页面跳转的写在事件中吧:
    <asp:TemplateField>
      <ItemTemplate>
      <asp:LinkButton ID="LinkButton1" runat="server" CommandArgument='<%# Eval("序号")%>' OnCommand="LinkButton1_Command"/>   
      </ItemTemplate>
    </asp:TemplateField>在后台添加LinkButton1_Command事件
    protected void LinkButton1_Command(object sender, CommandEventArgs e)
    {
        Session["squ"] = e.CommandArgument.ToString();
        Response.Redirect("'details.aspx?序号='"+e.CommandArgument.ToString()+"'");