我正在尝试使用这个JavaScript幻灯片,但它不是动态的,我需要它动态。通常,我只会使用ASP中继器;但是脚本需要一个图像数组,如下所示:
imagearray: [
['<%= ResolveUrl("~/Images/Slide/1.jpg") %>'],
['<%= ResolveUrl("~/Images/slide/2.jpg") %>']
我需要从sql db加载,所以我想也许:
imagearray: [
['<%: getJson() %>']
然后在c#中我试图做这样的事情:
public string getJson()
{
string programId = Request.QueryString["ProgramId"];
DataTable dt = CatalogAccess.GetProgramImages(programId);
}
这是我真的陷入困境的地方。我想也许我可以在数据表中返回我的FileNames然后将它们转换为对象数组?
public string getJson()
{
string programId = Request.QueryString["ProgramId"];
DataTable dt = CatalogAccess.GetProgramImages(programId);
dt.Columns.Add("FileName", typeof(string));
for (int i = 1; i < 10; i++)
{
DataRow dr = dt.NewRow();
dr["FileName"] = "~/Images/Slide/" + i.ToString();
dt.Rows.Add(dr);
}
ArrayList arrayList = new ArrayList();
//create arraylsit from DataTable
foreach (DataRow dr in dt.Rows)
{
arrayList.Add(dr["FileName"]);
}
return arrayList;
}
显然,这不起作用;我甚至不确定我是否正确地接近了这一点。
另外,为了能够从db返回FileNames,我需要能够在c#中添加文件路径(这就是我尝试将其添加到数据行的原因)。然后将所有这些字符串添加到我的JavaScript数组中。
任何帮助,都会非常感激;如果我偏离轨道,请不要犹豫,并告诉我正确的方向。
答案 0 :(得分:2)
让我们回顾一下:
看着:
Console.WriteLine (new JavaScriptSerializer().Serialize( (new ArrayList(){1,2,3,}) ));
将屈服:
[1,2,3]
为字符串
所以更改代码以返回
return new JavaScriptSerializer().Serialize(arrayList);
而不是
return arrayList;
然后改变:
imagearray: [
['<%: getJson() %>']
到
imagearray: <%: getJson() %>;