我正在嘗試將我的代碼集成到Google Chart API。我想從後面的代碼手動設置谷歌圖表標題和軸列名稱。我嘗試了下面的代碼,但不起作用。有什麼建議麼?javascript ASP.NET hiddenfield從代碼後面獲取值
ASPX文件
<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load("visualization", "1", { "packages": ["corechart"] });
function drawProgrammingChart() {
var data = new google.visualization.DataTable(operationdetails, 0.5);
var chart = new google.visualization.LineChart(document.getElementById("divprog"));
**var xAxis = document.getElementById("txtXAxisName");**
**console.log(xAxis);**
var yAxis = document.getElementById("txtYAxisName");
chart.draw(data, {
title: "Visualization Satisfaction", hAxis: { title: "Programming method" }, vAxis: { title: "Units" }
});
}
google.setOnLoadCallback(drawProgrammingChart);
</script>
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<div id="divprog" style="width: 750px; height: 350px;">
</div>
<asp:HiddenField ID="txtXAxisName" runat="server" />
<asp:HiddenField ID="txtYAxisName" runat="server" />
</asp:Content>
在後面的代碼我想手動設置隱藏字段的值。
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DataTable dt = generateDataTable();
**txtXAxisName.Value = "Days";**
txtYAxisName.Value = "Duration";
LoadChart(dt, "operationdetails");
}
}
private void LoadChart(DataTable table, string jsName)
{
Page.ClientScript.RegisterStartupScript(
this.GetType(),
jsName, string.Format("var {0} = {1};", jsName, new Bortosky.Google.Visualization.GoogleDataTable(table).GetJson()), true);
}
當獲取元素txtAxisName時,它將得到空值。
嘗試,但X軸仍然是空。 var xAxis = document.getElementById('<%#txtXAxisName.ClientID%>'); console.log(「XAxis:」+ xAxis); – NeoMatrix
如果您查看呈現的頁面源,您是否可以看到客戶端ID正在吐出?如果不是,你看到了什麼? – CalC
如果您在此答案中使用數據綁定語法(<%#...),則需要在代碼隱藏中調用Page.DataBind()。 – Joe