0

我有以下链接:

<Columns>
<asp:TemplateField ItemStyle-Width="10px">
<ItemTemplate>
<a id="btnShowPopup5" runat="server" class="thickbox" href='<%#"PopUpPage.aspx?TCode="+Eval("TaskCode")+"&TransSerial="+Eval("TransSerial")+"&TransYear="+Eval("TransYear")+"&mainCode="+Eval("MainCode")+"&year="+Eval("Year")+"&MCode="+Eval("MainCode")+"&DYear="+Eval("Year")+"&PageNew="+Eval("PageNew")+"&ValuesKey="+Eval("ValuesKey")+"&MailNumber="+Eval("MailNumber")+"&candidate_flag="+Eval("candidate_flag")+"&AR=2"+"&TBiframe=true&height=530&width=750"%>'
<asp:Image ID="Image23" runat="server" ToolTip="Back" ImageUrl="Images/cross.png" /></a>

我想eval在会话变量中设置每个值aspx,而不是像在查询字符串中那样传递变量。

只是由于某些原因,我无法在 .cs 中设置这些会话,所以我必须在 aspx 中使用Eval值设置会话,并且href应该是这样的:


href='<%#"PopUpPage.aspx?TBiframe=true&height=530&width=750"%>'

这该怎么做 ?

4

4 回答 4

4

在 .aspx 页面中设置会话变量。就像是

 <%# Session["Session_TaskCode"] = DataBinder.Eval(Container.DataItem, "TaskCode") %>
于 2012-11-06T13:50:56.447 回答
1

您可以在 ItemDataBound 事件中做同样的事情

<ItemTemplate>
<asp:Label id="lblURL" runat="server" Text="Your Query string comes here"></asp:Label>
</ItemTemplate>

并在 ItemDataBound 事件上找到此 Label 控件

protected void ItemDataBound(object sender, DataListItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
    //Set your session here
    Label lblURL = (Label)e.Item.FindControl("lblURL");
    Session["Session_TaskCode"] = lblURL.Text
    }
}
于 2012-11-06T13:56:57.417 回答
1

这个问题将由jquery解决

您的重定向控制

  <a id="btnShowPopup5" runat="server" class="thickbox" onClientClick="page_gridview(<%#Eval("TaskCode")%>)" href='Your Redirect URL'/>

将此脚本放在 aspx 页面中

<script type="text/javascript">

        function page_gridview(id) {

            $.ajax({
                type: "POST",
                url: "../test.aspx/assignpage",
                data: "{'id':'" + id + "'}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (data) {
                    alert(data.d);
                    // AjaxSucceeded(msg);
                }

            });

            return false;
        };
  </script>

Put this following method in test.aspx.cs

[WebMethod()]
public static bool assignpage(string id)
{
    HttpContext.Current.Session["id"] = id;

    return true;
}
于 2012-11-06T15:02:21.810 回答
0

编辑以显示带有会话变量的示例。

背后的代码

protected void Page_Load(object sender, EventArgs e)
{
    Session["PopUpPage"] = "PopUpPage.aspx?TBiframe=true&height=530&width=750";
}

aspx

<a href='<%= Session["PopUpPage"].ToString() %>'>Testing</a>
于 2012-11-06T12:48:08.560 回答