【问题标题】:Refresh the session in Updatepanel on Partial Postback in ASp.net在 ASp.net 中的部分回发上刷新 Updatepanel 中的会话
【发布时间】:2014-12-05 19:49:40
【问题描述】:

我有一个更新面板,并且在该更新面板中我有一个会话。

在部分回发时,我必须根据日期更改会话的值。 但是当我做部分回发会话时没有刷新或丢失,不知道。 在按钮上单击我正在更改会话值。 我怎样才能做到这一点

这是 HTML

        <asp:UpdatePanel ID="UpdatePasanel1" 
           UpdateMode="Always"  
               ClientIDMode="AutoID"ChildrenAsTriggers="true" runat="server">
           <ContentTemplate>
             <div class="vendor_shift_top">
              <div class="col-md-12">
                <div class="cntrol_heading">



            <div class="inner_cntrol_heading_right">

                <div class="cls">


                    <div class="popup_inner">
                        Start Date:
                    </div>


                    <div class="popup_inner">

                        <asp:TextBox ID="txtStartDate" ReadOnly="false" AutoPostBack="false" CssClass="txt_80" runat="server"></asp:TextBox>                                
                    </div>

                    <div class="popup_inner">
                        End Date:                                                    
                    </div>
                    <div class="popup_inner">
                        <asp:TextBox ID="txtEndDate" ReadOnly="false" CssClass="txt_80" runat="server"></asp:TextBox>                              
                    </div>
                    <div class="popup_inner">
                        <asp:LinkButton ID="LinkButton1" ForeColor="White" OnClick="Button1_Click" runat="server"><img src="../images/search.png" /> Search</asp:LinkButton>                               
                    </div>
                </div>


                <script type="text/javascript">
                    //On Page Load
                    $(".cls1").click(function () {
                        $(".cls").toggle("blind", 100);
                    });

                    //On UpdatePanel Refresh
                    var prm = Sys.WebForms.PageRequestManager.getInstance();
                    if (prm != null) {
                        prm.add_endRequest(function (sender, e) {
                            if (sender._postBackSettings.panelsToUpdate != null) {
                                $(".cls1").click(function () {
                                    $(".cls").toggle("blind", 100);
                                });
                            }
                        });
                    };
                </script>

            </div>
        </div>
    </div>

    <div class="vendor_shift_top">
        <div class="col-md-12 map_box">
            <script type="text/javascript" class="s">
                //On Page Load
                $(function () {
                    var dataSource = [
                            <%=Session["TotalSalesPurchase"]%>
                    ];

                    $("#chartContainer3").dxChart({
                        dataSource: dataSource,
                        commonSeriesSettings: {
                            argumentField: "year"
                        },
                        series: [
                            { valueField: "Inward", name: "Purchase" },
                            { valueField: "Outward", name: "Sales" },
                        ],
                        argumentAxis: {
                            grid: {
                                visible: true
                            }
                        },
                        tooltip: {
                            enabled: true
                        },
                        legend: {
                            verticalAlignment: "bottom",
                            horizontalAlignment: "center"
                        },
                        commonPaneSettings: {
                            border: {
                                visible: true,
                                right: false
                            }
                        }
                    });
                });

                //On UpdatePanel Refresh
                //var prm = Sys.WebForms.PageRequestManager.getInstance();
                //if (prm != null) {
                Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function (sender, e) {
                    //if (sender._postBackSettings.panelsToUpdate != null) {

                    var dataSource = [
                            <%=Session["TotalSalesPurchase22"]%>
                    ];

                    $("#chartContainer3").dxChart({
                        dataSource: dataSource,
                        commonSeriesSettings: {
                            argumentField: "year"
                        },
                        series: [
                            { valueField: "Inward", name: "Purchase" },
                            { valueField: "Outward", name: "Sales" },
                        ],
                        argumentAxis: {
                            grid: {
                                visible: true
                            }
                        },
                        tooltip: {
                            enabled: true
                        },
                        legend: {
                            verticalAlignment: "bottom",
                            horizontalAlignment: "center"
                        },
                        commonPaneSettings: {
                            border: {
                                visible: true,
                                right: false
                            }
                        }
                    });
                    //}
                });
                //};
            </script>
            <div id="chartContainer3" 
           class="overlap_cls" runat="server" style="width: 100%; height: 340px;"></div>
        </div>
    </div>
     </ContentTemplate>
      <Triggers>
         <asp:AsyncPostBackTrigger ControlID="LinkButton1" EventName="Click" />
      </Triggers>
  < /asp:UpdatePanel>

C#

protected void Button1_Click(object sender, EventArgs e)
    {
        //Session.Remove("TotalSalesPurchase22");

        cm.ds.Clear();
        ArrayList arr = new ArrayList();
        arr.Add("@StartDate|" + txtStartDate.Text + "");
        arr.Add("@EndDate|" + txtEndDate.Text + "");
        cm.sp_reader_execute("spSalesPurchase_LineChart_Order", arr);

        string DisplayChartFormat = "";
        while (cm.rs.Read())
        {
            string MonthYear = cm.rs["month"].ToString() + "-" + cm.rs["year"].ToString();
            DisplayChartFormat += "{ year: '" + MonthYear + "', Inward: " + cm.rs["InWardQty"].ToString() + ", Outward: " + cm.rs["OutWardQty"].ToString() + " },";
        }

        string FinalDisplayFormat = DisplayChartFormat.Remove(DisplayChartFormat.Length - 1);
        Session["TotalSalesPurchase22"] = FinalDisplayFormat;
        ScriptManager.RegisterStartupScript(this.UpdatePanel1, typeof(string), "alertScript", string.Format("alert('{0}');", Session["TotalSalesPurchase22"]), true);
    }

任何帮助将不胜感激

谢谢

哈迪克·帕尔马。

【问题讨论】:

  • 更具体。您想做什么,而 具体地 会发生什么?放弃你的整个代码,并在stackoverflow上询问它不工作的主题
  • 我没有删除整个代码,而且我对堆栈溢出并不陌生,我刚刚粘贴了我已经告诉过的部分代码,单击按钮时我的会话没有刷新。不知道为什么?
  • “刷新”是什么意思?会话只是键值对的集合。你的意思是你的Session["TotalSalesPurchase22"] 没有被设置?您是否尝试在按钮单击中设置断点以查看是否正在调用单击处理程序?
  • @Denish Parvadia 没用 :(
  • @Banana 我亲爱的朋友我有 2 个会话 第一个会话在页面加载会话 ["TotalSalesPurchase"] 和第二个会话会话 ["TotalSalesPurchase22"] 仅在回邮时调用,即在按钮上单击我是单击按钮时成功填充会话,但该值未反映在网页上

标签: c# asp.net session updatepanel


【解决方案1】:

使用此代码。

string FinalDisplayFormat = DisplayChartFormat.Remove(DisplayChartFormat.Length - 1);
Session["TotalSalesPurchase22"] = FinalDisplayFormat;

Response.Write(@"<script language='javascript'>alert('The following errors have occurred: \n" + Session["TotalSalesPurchase22"] + " .');</script>");

【讨论】:

  • 不工作亲爱的我得到了这个非常好的会话更新链接,但不知道从哪里输出这一行 ScriptManager.RegisterStartupScript(this.UpdatePanel, typeof(string), "alertScript", string.Format( "alert('{0}');", Session["myVariable"]), true);
【解决方案2】:

由于您的按钮位于更新面板内,因此您不应为其使用异步触发器。使用常规触发器,它会正常工作:

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
   <ContentTemplate>
        <asp:Button ID="BT_Test" runat="server" Text="Button" OnClick="BT_Test_Click"></asp:Button>
        <script>
            alert(<%=Session["test"]%>);
        </script>
    </ContentTemplate>
    <Triggers>
        <asp:PostBackTrigger ControlID="BT_Test"/>
    </Triggers>
</asp:UpdatePanel>

c#:

protected void BT_Test_Click(object sender, EventArgs e)
{
    Session["test"] = "2";
}

【讨论】:

  • 先生,但这些会导致整个页面加载,因此我的整个页面正在加载,我不能违背我的客户要求,谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-29
相关资源
最近更新 更多