我是一个小菜鸟,所以请好。我搜索谷歌/ stackoverflow /其他地方,并没有找到任何答案,但我不知道,如果我甚至使用正确的条款。使用DataTableReader“datatable”名称的变量
一点背景第一:
我已经作出,其显示在仪表板上的MySQL数据的网页。一切工作正常。
仪表板上的每个“图块”都会在我的aspx页面中使用mysql查询制作的谷歌图表显示不同的数据。每个图块还具有“刷新”按钮,以便能够再次运行查询来更新图表。
刷新按钮具有用于每个图块同一类,但一个唯一的ID:
<input type="button" id="DailyTotal" class="rebind"/>
点击这个运行的JavaScript函数执行以下操作:
- 调用的IHttpHandler与AJAX阅读DataTable并检索新的查询数据
- 将数据格式化为JSON
- 重绘图表
到目前为止,这一切正常工作。
现在,这里是我的问题:
我如何通过瓷砖的ID随着AJAX调用了IHttpHandler,这样我可以选择正确的查询,以便对代码隐藏运行?
每个图块的ID与相应的DataTable名称相同。
目前我的代码是这样的:
private static DataTable ProgrammingTable(string chart)
{
var rand = new System.Random(DateTime.Now.Millisecond);
var dt = new DataTable();
DataTableReader reader = new DataTableReader(Dashboard.DailyTotal());
try
{
dt.Load(reader);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
return dt;
}
有什么办法,我可以使“DailyTotal())”的变量,这样我可以有一段代码这是能够更新每个瓷砖?
我试过这样做,通过使用ASP隐藏字段来传递ID,但我仍然不确定如何构造代码,以便它知道使用该变量的值作为DataTable的名称和不要认为变量名称是DataTable名称。
这就是我想我 ASPX页面上:
<asp:HiddenField ID="ChartID" runat="server" value=""/>
JS:
var chartName = $(this).attr("id");
$("input[id=ChartID]").val(chartName);
代码隐藏:
Page page = (Page)HttpContext.Current.Handler;
HiddenField ChartID = (HiddenField)page.FindControl("ChartID");
var aa = ChartID.Value;
然后我试着这样做:
DataTableReader reader = new DataTableReader(Dashboard.aa());
但它显然只是寻找名为aa的DataTable。
我能想到的唯一解决方案是给每个tile自己的ajax调用和iHttpHandler,但显然不是更可取的。
请帮助,请让我知道,如果有什么不清楚。
谢谢。
欢迎来到SO! +1为详细和深思熟虑和记录的问题,并为“noob” - 你的话,而不是我的英勇努力:) –
我想到的问题的标题可能有点误导,或不是真的解决这个问题的关键。我将自己提供一个编辑,但会将这个决定留给你。我会考虑你的真正问题是... 1.使用(jQuery?)ajax调用和ASP.NET WebMethod(?)将字符串从客户端传递到服务器,2.调用基于字符串值的方法。 –