【问题标题】:How to pass value to the javascript on partial post back using updatePanel如何使用 updatePanel 在部分回发时将值传递给 javascript
【发布时间】:2011-10-05 16:21:26
【问题描述】:

我在后面的代码中进行了一些查询,并将值分配给隐藏字段。如何将相同的值传递给 Javascript。我不想使用会话,因为它不会在部分页面加载时更新。

这是我使用的代码:

 <script type="text/javascript">
    google.load("visualization", "1", { packages: ["corechart"] });
    google.setOnLoadCallback(drawChart);
     //Draw a pie
    function drawChart() {
        var data = new google.visualization.DataTable();
        data.addColumn('string', 'Task');
        data.addColumn('number', 'Hours per Day');
        data.addRows(4);

        data.setValue(1, 0, 'Not Received');
        data.setValue(1, 1, Value1);
        data.setValue(2, 0, 'Received');
        data.setValue(2, 1, Value2);
        data.setValue(3, 0, 'Read');
        data.setValue(3, 1, Value3);
        var chart = new google.visualization.PieChart(document.getElementById('chart_div'));
        chart.draw(data, { width: 450,backgroundColor:'#DCDCDC', height: 300, title: 'Message Status' });

      // to draw a bar
        var progress1 = new RGraph.VProgress('progress1', Value4, 100);
        progress1.Set('chart.colors', [Value5]);
        progress1.Set('chart.tickmarks', false);
        progress1.Set('chart.margin', 3);
        progress1.Set('chart.tickmarks.inner', false);
        progress1.Set('chart.label.inner', true);
        progress1.Set('chart.gutter.left', 20);
        progress1.Set('chart.gutter.right', 40);
        progress1.Set('chart.tickmarks', true);
        progress1.Set('chart.units.post', '%');
        progress1.Draw();
        }           

最后一行中的值应该从隐藏字段中传递。请给我一些代码示例。

【问题讨论】:

    标签: c# javascript asp.net ajax


    【解决方案1】:

    根据调用此代码的时间,您可以执行以下操作:

    data.setValue(1, 1, "<%=ServerSideFunction()%>");
    

    编辑

    您说您将值分配给隐藏字段,那么为什么不直接从 Javascript 中的 HiddenField 中检索值呢?:

    JavaScript:

    var value = document.getElementById("<%=HiddenField1.ClientID%>").value;
    

    jQuery:

    var value = $("#<%=HiddenField1.ClientID%>").val();
    

    如果您需要获取在页面回发之前不可用的值,我会考虑使用 PageMethods。

    这里有一篇文章解释了如何使用 PageMethods:
    http://blogs.microsoft.co.il/blogs/gilf/archive/2008/10/04/asp-net-ajax-pagemethods.aspx

    【讨论】:

    • 你是在建议我调用一个方法来获取值吗?我必须将许多值传递给 JS 不能为每个值使用单独的方法。
    • 我只是按照你的例子。如果您可以扩展您的问题,我会更新我的答案。
    • 我必须将 5 个值传递给我的 Javascript
    【解决方案2】:

    如果您尝试在页面加载时向客户端发送服务器端数据,您可以使用 .NET ScriptManager 类在页面上包含脚本或内联(例如 var value = &lt;%= Value %&gt;)。

    以下是如何使用 ScriptManager 在响应中包含脚本的示例:

    Page.ClientScript.RegisterStartupScript(Me.GetType(), Me.GetType.Name(), script, True)
    

    在这种情况下,对象script 是一个字符串,其中包含您要添加到页面的实际脚本。 script 等于的示例:

    "var data = 1234"
    

    然后它将被包含在您的页面响应中(在表单元素内),如下所示:

    <script>var data = 1234</script>
    

    【讨论】:

    • 我的页面中有一个脚本管理器,因为我有更新面板。能给我一个代码示例吗
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-01
    相关资源
    最近更新 更多