我想让我的图表宽度和高度动态化,但是我无法使其工作。到目前为止,我尝试过:为Asp:Chart控件设置动态大小
我已经在Asp:Panel中设置了图表,并给出了面板所需的百分比值。
<asp:Panel ID="Panel1" runat="server" Width="90%" Height="40%">
<asp:Chart ID="Chart1" runat="server" CssClass="chart">
<Series>
<asp:Series Name="Series1"></asp:Series>
</Series>
<ChartAreas>
<asp:ChartArea Name="ChartArea1"></asp:ChartArea>
</ChartAreas>
</asp:Chart>
</asp:Panel>
然后我尝试分配在我的C#代码
Chart1.Width = Panel1.Width;
Chart1.Height = Panel1.Height;
然而这产生一个异常的那些值的图表,作为图表接收所述百分比值代替的像素的量的。我也试过(int)Panel.Width.Value无济于事。
我试着用CSS做它,摆弄位置:绝对和其他属性,但我可以让它为面板但不适用于图表。
任何人都可以启发我一个简单的解决方案,不需要进入JQuery等?
编辑:
的的可变值Panel1.Width将输出90%而Panel1.Width.Value意愿出于某种原因输出(40%和对于Panel1.Height)。
Chart1.Width.Value将不得不由Visual Studio分配的300像素的默认值,因此:
Chart1.Width = new Unit(Chart1.Width.Value * Panel1.Width.Value/100, UnitType.Pixel);
将输出一样的,如果我是这样做:
Chart1.Width = new Unit(300 * 90/100, UnitType.Pixel);
输出:静态值为270px
我需要检索像素值b y中的比例Panel1.Width,但我想不出这样做的一种方式,
编辑2:
图表拉伸位用CSS工作正常,但输出是有点给人留下深刻印象,所以我想以使JavaScript示例工作,但我有没有成功......我增加了一个按钮强制回传和在Page_Load事件我插入:
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack)
{
if (panelWidth.Value != "" && panelHeight.Value != "")
{
Chart1.Visible = true;
Chart1.Width = int.Parse(panelWidth.Value);
Chart1.Height = int.Parse(panelHeight.Value);
}
}
else //Initialize the chart with some sample points
{
Chart1.Series[0].Points.AddXY(1, 1);
Chart1.Series[0].Points.AddXY(1, 2);
Chart1.Series[0].Points.AddXY(2, 1);
Chart1.Series[0].Points.AddXY(2, 2);
Chart1.Series[0].Points.AddXY(3, 1);
Chart1.Series[0].Points.AddXY(3, 2);
}
}
如果我开始页图表显然是不可见,所以我还加了一个按钮
<asp:Button ID="Button1" runat="server" Text="Button" />
以触发回传的形式,它会重新加载页面,但panelWidth.Value和panelHeight.Value仍为空。我错过了什么吗?好像我无法触发javascript代码:/
什么当设置'发生宽度=“100%” HEIGHT =“100%”'到图表? –
您不能将百分比值设置为图表度量,它不会接受任何百分比的宽度或高度 – Innat3
设置图表的dockstyle填充不工作? – soohoonigan