1

以前にハイチャートを使用してデータベースからデータを取得しましたが、更新パネルにあったため、データが表示されませんでした。

<input class="test" name="ga" type="radio" value="a"> name</input>
<input class="test" name="ga" type="radio" value="b"> last</input>
<input class="test" name="ga" type="radio" value="c"> first</input>

このラジオを使用して、データが機能していました.vb.netのバックコードからjavascriptを呼び出したので、隠しフィールドを作成し、データセットを配列に取得して、そこからJsonを使用してそれを非表示の値をチャートに表示しました。ただし、ラジオボタンを使用してチャットを実装する必要があります。次のコードはラジオボタンで、同じ概念です...

<asp:RadioButtonList RepeatDirection="Horizontal" CssClass="radioList test"
                     ID="RadioButtonList1" AutoPostBack="true" runat="server"
                     RepeatLayout="Flow" name="ga" type="radio">
    <asp:ListItem  Selected="True" Value="a">name</asp:ListItem>
    <asp:ListItem Value="a">first</asp:ListItem>
    <asp:ListItem Value="a">last</asp:ListItem>
 </asp:RadioButtonList>

このコードを使用すると、データがわかりません。更新すると、サーバーからデータが取得されません。私のJavaScriptコードは次のとおりです。

$(function () {
var chart = new Highcharts.Chart({
    chart: {
        renderTo: 'container'
    }
});

$(".test").change(function() {
    var value = this.getAttribute("value");
    while (chart.series.length > 0) {
        chart.series[0].remove(true);
    }
    if (value == 'a') {
        chart.xAxis[0].update({categories: ['Jan', 'Feb', 'Mar']});
        chart.yAxis[0].setTitle({ text: "name" });

        chart.addSeries({
            name: 'Rainfall11',
            type: 'column',
            data:array(comes from vb.net)       
        });      
        chart.addSeries({
            name: 'Rainfall2',
            type: 'column',
            data: array2 (comes from vb.net)              
        });                      
        chart.addSeries({
            name: 'Rainfall3',
            type: 'column',
            color: '#FFA500',  
            data: array3 (comes from vb.net)             
        });
    } else if (value == 'b') {

        chart.yAxis[0].setTitle({ text: "first" });
    } else if (value == 'c') {
           chart.addSeries({
            name: 'Rainfall5',
            type: 'column',
            data:array5          
        });
        chart.addSeries({
            name: 'Rainfall6',
            type: 'column',
            data:array6
        });
    } else {
        alert("Error!");    
    }
 });});

問題は、サーバーからデータを取得できないことです。ページを更新してもデータが読み込まれず、javascript でのみ呼び出されるためです。これをグーグルで検索し、更新パネルにいることに関係があると感じています。 、 redraw メソッドを使用するか、 RegisterClientScriptBlock を使用します。

これは、RegisterClientScriptBlock について、msdn から取得したものです。

 Dim script As String
    script = _
    "function ToggleItem(id)" & _
    "  {" & _
    "    var elem = $get('div'+id);" & _
    "    if (elem)" & _
    "    {" & _
    "      if (elem.style.display != 'block') " & _
    "      {" & _
    "        elem.style.display = 'block';" & _
    "        elem.style.visibility = 'visible';" & _
    "      } " & _
    "      else" & _
    "      {" & _
    "        elem.style.display = 'none';" & _
    "        elem.style.visibility = 'hidden';" & _
    "      }" & _
    "    }" & _
    "  }"

    ScriptManager.RegisterClientScriptBlock( _
        Me, _
        GetType(Page), _
        "ToggleScript", _
        script, _
        True)

私のjavascriptコードはそこに入っていますか?

4

2 に答える 2

0

まず、javascript コードを の中に入れてみてくださいfunction pageLoad(sender, args) {}。これにより、部分的なポストバックが完了したときに JavaScript コードが実行されるようになります。

次に、あなたの RadioButtonList は UpdatePanel 内にありますか? そうでない場合は、AutoPostBack を False にして、UpdatePanel のトリガーとして指定します。

于 2013-07-04T13:12:57.423 に答える