Загрузка диаграмм Fusion при нажатии кнопки в ASP.Net

Я пытаюсь показать свою диаграмму слияния в определенной области, особенно там, где я вызываю функцию CreateChart в моем файле aspx при нажатии кнопки. То, как я это делаю сейчас, заключается в том, что диаграмма загружается, как только загружается страница, но я хотел бы видеть, что диаграмма загружается только при нажатии кнопки. Я пробовал разные способы, но не смог сделать это правильно, так как я не так хорошо знаком с диаграммами слияния. Спасибо. Вот мой файл ASPX:

<table class="style1">

<td class="style8">
                <asp:Button ID="btnClick" runat="server" Height="29px" Text="Button" 
                    Width="158px" onclick="btnClick_Click" />
            </td>

 <td class="style4" colspan="2">
               <% =CreateChart() %> </td>
        </tr>
    </table>

и вот мой код:

public string CreateChart()
    {
        SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString);
        string sqlStatement = "select   Status1, Count(Status1) as TotalCount from  MyTable where Closing_Date =  '" + txtStartClosingDate.Text + "' and Closing_Date <= '" + txtEndClosingDate.Text + "' and Status1 is not null group by  Status1";
        SqlCommand cmd = new SqlCommand(sqlStatement, con);
        con.Open();
        SqlDataReader reader = cmd.ExecuteReader();
        string strXML;
        strXML = "<graph labelDisplay='auto' useEllipsesWhenOverflow='1' decimals='2' decimalPrecision='0' showValues='1' enablesmartlabels='0' showlabels='0'  legendAllowDrag='1' numberSuffix=' Days' showLegend='1' pieSliceDepth='45' formatNumberScale='0'>";
        while (reader.Read())
        {
            strXML += "<set name='" + reader["Category"].ToString() + "' value='" + reader["AvgNumbers"].ToString() + "' />";
        }
        strXML += "</graph>";
        return FusionCharts.RenderChart("../FusionCharts/Pie2D.swf", "ChartID", strXML, "FactorySum", "450", "450", false, false);

    }

person user1858332    schedule 22.01.2013    source источник


Ответы (1)


Попробуй это

Вместо

<td class="style4" colspan="2">
           <% =CreateChart() %> </td>

использовать

<td class="style4" colspan="2">
           <asp:Literal mode="PassThrough" runat="server" ID="literalPlaceHolder"/> </td>

и в обработчике события кнопки

public void btnClick_Click(...)
{
       literalPlaceHolder.Text = CreateChart();
}
person Bala R    schedule 22.01.2013
comment
Спасибо, Бала, за быстрый ответ, но ему не нравится asp:LiteralControl, когда я его набираю; он показывает мне только буквально. Также в коде позади я получаю эту ошибку: literalPlaceHolder не существует. Я не уверен, что еще мне не хватает. Благодарность - person user1858332; 23.01.2013
comment
@user1858332 user1858332 извините .. Я внес пару правок, чтобы исправить это .. во-первых, LiteralControl должен быть Literal, как вы нашли; также имя= должно быть ID= - person Bala R; 23.01.2013