0

我面临以下问题:

当我根据我的要求在我的 aspx 中设置会话时,如下所示:

<Columns>
<asp:TemplateField ItemStyle-Width="10px">
<ItemTemplate>
<a id="btnShowPopup5" runat="server" class="thickbox" href='<%#"PopUp.aspx?AR=2"+"&TBiframe=true&height=530&width=750"%>'
<asp:Image ID="Image23" runat="server" ToolTip="Back" ImageUrl="Images/cross.png" /></a>
<asp:HiddenField ID="HDN_TaskCode" Value='<%# Session["s_TaskCode"] = DataBinder.Eval(Container.DataItem, "TaskCode") %>'
runat="server" />

我注意到:Session["s_TaskCode"]总是用gridview中的第一行任务代码值设置!

这不是我想要的。

我想根据行设置我的会话。

说我的 gridview 有两行:

  • 第一个 task_code 值为 7
  • 第二个 task_code 值为 10

我想根据我单击的超链接设置具有正确值的会话。

像数据键一样。

注意:我想在 .aspx 而不是 .cs 中设置我的会话。

4

1 回答 1

2

您的代码中只使用了一个会话变量 ( Session["s_TaskCode"])。那么,如何在其中保留多个值。它将始终包含上次写入的值。

要在会话中存储逐行值,您必须执行以下操作:

Session["s_TaskCode" + rowIndex]

这里,rowIndex 是 <%# Container.DataItemIndex %>

所以你可以像这样使用:<%# Session["s_TaskCode" + Container.DataItemIndex] %>

编辑:

而不是会话,为什么不在'btnShowPopup5'href url QueryString参数中传递TaskCode的值:

href='<%#"PopUp.aspx?AR=2"+"&TBiframe=true&height=530&width=750&" + DataBinder.Eval(Container.DataItem, "TaskCode") %>'
于 2012-11-11T08:28:10.317 回答