使用gridview中的超级链接域传递会话变量

时间:2013-05-10 15:53:13

标签: asp.net gridview session-variables

这是我的网格:

        <asp:GridView ID="gvBatters" runat="server" DataKeyNames="playerID" 
    AutoGenerateColumns="False">
    <Columns>
        <asp:HyperLinkField DataTextField="nameFull" HeaderText="Player" 
            NavigateUrl="~/Pages/individualPlayer.aspx" />
        <asp:BoundField DataField="g" HeaderText="G" />
        <asp:BoundField DataField="avg" HeaderText="AVG" />
        <asp:BoundField DataField="obp" HeaderText="OBP" />
        <asp:BoundField DataField="slg" HeaderText="SLG" />
        <asp:BoundField DataField="ops" HeaderText="OPS" />
        <asp:BoundField DataField="rc" HeaderText="RC" />
        <asp:BoundField DataField="h" HeaderText="H" />
        <asp:BoundField DataField="doub" HeaderText="2B" />
        <asp:BoundField DataField="trip" HeaderText="3B" />
        <asp:BoundField DataField="hr" HeaderText="HR" />
        <asp:BoundField DataField="rbi" HeaderText="RBI" />
    </Columns>
</asp:GridView>

我想将带有超链接字段的datakeyname“playerID”传递给individualPlayer页面。我更喜欢不使用查询字符串,所以我认为必须有一种方法使datakeyname成为会话变量。然后我可以使用该变量来满足我的需要,不需要查询字符串。我只是想不出怎么做这个

2 个答案:

答案 0 :(得分:0)

HyperLinkField不适用于此。你想要的是一个带有按钮类型链接的命令字段。单击该命令时,RowCommand事件将在回发到服务器时触发,您将写入会话值,然后使用Response.Redirect。这就是必须要做的事情。

答案 1 :(得分:0)

您也可以从后面的代码中绑定锚标记,而不是这样做。如你所知,Hyper链接只是一个锚标记。所以在这种情况下,您可以将后面的代码中的锚标记绑定为

<a href='~/Pages/individualPlayer.aspx?Id=<%# DataBinder.Eval(Container.DataItem, "Id") %>'>Player</a>

尝试这个,如果你想在绑定时输入链接名称,你也可以像这样写

<a href='~/Pages/individualPlayer.aspx?Id=<%# DataBinder.Eval(Container.DataItem, "Id") %>'><%# DataBinder.Eval(Container.DataItem, " PageName“)%&gt;

试试这个。