sql while循环.net通过隐藏变量解析值到javascript函数以创建图表
Posted
技术标签:
【中文标题】sql while循环.net通过隐藏变量解析值到javascript函数以创建图表【英文标题】:sql while loop .net parsing values via a hidden variable to javascript function to create chart 【发布时间】:2019-02-21 20:05:32 【问题描述】:使用 SQLDataReader 在 .NET 中循环存储过程。使用 while 循环读取阅读器中的行。在每个循环上创建一个具有 uniqueID (int i = 0) 的 div。从存储过程第一行第十列中检索数据 并将值存储在隐藏变量中。然后我调用一个 javascript 函数来使用该 div 中的这个值创建一个图表,然后增加 i 值。
我注意到在此之后循环转到下一行,隐藏变量被第二行值替换,并且再次调用了 javascript。看起来在循环中它每次都创建一个唯一的 div,但没有调用 javascript 函数并将图表放在每个唯一的 div 中。它似乎只把它放在第一个 div 中,最后只有一个图表,最后一个值来自读者。
private void ConstructBoxPlot()
//currentstatus = txt1.Value;
//currentstatus = currentstatus.Replace("\"", "");
string connectionstring = ConfigurationManager.ConnectionStrings["DBConnection"].ConnectionString;
SqlConnection cn = new SqlConnection(connectionstring);
SqlCommand cmd = new SqlCommand("[dbo].cr_fe_KPI_RPT_Summary", cn);
cmd.Parameters.AddWithValue("@SubTeamNo", SubTeam);
cmd.Parameters.AddWithValue("@Month", Month);
cmd.Parameters.AddWithValue("@Year", Year);
cmd.Parameters.AddWithValue("@ReportPeriod", ReportPeriod);
cmd.Parameters.AddWithValue("@controlID", ControlID);
cmd.Parameters.AddWithValue("@PracticeGroupID", PracticeGroup);
cmd.Parameters.AddWithValue("@Instructor", SearchInput.Text);
cmd.Parameters.AddWithValue("@MeasureID", 0);
SqlDataAdapter da = new SqlDataAdapter(cmd);
cmd.CommandType = CommandType.StoredProcedure;
cn.Open();
SqlDataReader reader = cmd.ExecuteReader();
var chartValues = new List<string>();
var chartValues2 = new List<string>();
int i = 0;
if (reader.HasRows)
while (reader.Read())
// We create our new div
System.Web.UI.htmlControls.HtmlGenericControl newDiv = new System.Web.UI.HtmlControls.HtmlGenericControl("DIV");
newDiv.ID = "container" + i; //<---Give and ID to the div, very important!
newDiv.Attributes.Add("class", "pagebr"); //<---Apply a css class if wanted
div2.Controls.Add(newDiv); //<---Add the new div to our already existing div
string name = reader.GetString(0);
if (name != "Total")
string str = reader["ChartData"].ToString();
string a = reader["MeasureDesc"].ToString();
string[] strList = str.Split(',');
// convert it in json
dataStr = JsonConvert.SerializeObject(strList, Formatting.None);
hiddenvariable.Value = dataStr;
hiddenvariablemeasuredesc.Value = a;
Page.ClientScript.RegisterStartupScript(this.GetType(), "MyFunc", "CreateBoxPlot(" + i + ");", true);
i = i + 1;
chartValues.Clear();
else
reader.Close(); // close the reader
cn.Close();
javascript (sn-p):
函数 CreateBoxPlot(number)
var hv = $('#hiddenvariable' + number).val();
console.log(hv);
var hvmeasure = $('#hiddenvariablemeasuredesc' + number).val();
console.log(hvmeasure);
var hvtarget = $('#hiddenvariabletarget' + number).val();
var chart;
var titleText = hvmeasure;
//var subTitleText = 'Test Chart Subtitle';
var type = 'boxplot';
var data = [JSON.parse(hv).map(item => parseInt(item))]; //Doesnt work in IE
var id = "container" + number;
console.log(id);
var $container = $("<div id='"+number+"'>").appendTo(document.body);
$(function ()
$(id).highcharts(
chart: type: type, inverted: true,
title: text: hvmeasure ,
//subtitle: text: subTitleText ,
renderTo: $container,
legend: enabled: false ,
tooltip:
shared: true,
【问题讨论】:
【参考方案1】:看起来,您的页面上有一个隐藏元素。您需要为每个
创建一个新的隐藏元素System.Web.UI.HtmlControls.HtmlGenericControl newDiv = new System.Web.UI.HtmlControls.HtmlGenericControl("DIV");
创建一个隐藏的控制元素并将其添加到newDiv
元素
System.Web.UI.HtmlControls.HtmlInputHidden hiddenElement = new System.Web.UI.HtmlControls.HtmlInputHidden();
hiddenElement.Id=IDforthisField;
hiddenElement.Value = dataStr; // <--------- Assign the value here
newDiv.Controls.Add(hiddenElement); // <--- Then add to the div element
`
希望我能回答你的问题
【讨论】:
这似乎不起作用 - 我在 .net 代码中创建了一个新的隐藏元素,但 javascript 现在根本不起作用 - 它甚至没有绘制一张图表。也用 javascript 代码更新了我的问题以上是关于sql while循环.net通过隐藏变量解析值到javascript函数以创建图表的主要内容,如果未能解决你的问题,请参考以下文章
如何在 SQL Server 的 While 循环中设置变量
while循环内的表变量每次都没有初始化:SQL Server
Informix SQL 11.5 — 在 while 循环中访问变量