如何使用eval值设置会话变量?

时间:2012-11-06 12:38:26

标签: c# asp.net session gridview eval

我有以下链接:

<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中设置这些会话,因此我必须使用Eval值设置aspx中的会话,并且href应该是这样的:


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

怎么做?

4 个答案:

答案 0 :(得分:4)

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

这样的东西
 <%# Session["Session_TaskCode"] = DataBinder.Eval(Container.DataItem, "TaskCode") %>

答案 1 :(得分: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
    }
}

答案 2 :(得分: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;
}

答案 3 :(得分: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>