1

我正在从 c# 代码动态构建 html 表。这是我的代码的一部分:

listHTML.Append("<td onClick='GoToHourlyReport("
    + Convert.ToDateTime(dr["IntervalStartTime"]).ToString("yyyy-MM-dd")
    + ","
    + deptId
    + ");' align='center' valign='middle' class='graph_red_grid_text'>"
    + Convert.ToDateTime(dr["IntervalStartTime"]).ToString("yyyy-MM-dd hh:mm:ss")
    + "</td>"
);

我正在尝试onclicktd日期传递给 JavaScript 函数。

onClick='GoToHourlyReport("
    + Convert.ToDateTime(dr["IntervalStartTime"]).ToString("yyyy-MM-dd")
    + ","
    + deptId
    + ");' 

但是当我传递一个日期时2012-10-01,我总是在 JavaScript 函数中得到一个值 1999。任何人都可以阐明我做错了什么吗?

这是js函数

    function GoToHourlyReport(date, deptId) {
    window.location.href = "CallAverageHourlyReport_BW.aspx?Date=" + date + "&Queue=" + deptId;
}
4

2 回答 2

4

查看页面源码,你会看到你的问题。您在生成的代码中缺少引号。

总之你在做

alert(2012-10-01);

不是

alert("2012-10-01");

添加转义的“

listHTML.Append("<td onClick='GoToHourlyReport(\"" + Convert.ToDateTime(dr["IntervalStartTime"]).ToString("yyyy-MM-dd") + "\",\"" + deptId + "\");'...
于 2012-12-06T13:33:54.553 回答
1

您需要将日期作为字符串传递,否则它会被解释为数字(2,010 减 10 减 1 = 1,999):

listHTML.Append("<td onClick=\"GoToHourlyReport('"
    + Convert.ToDateTime(dr["IntervalStartTime"]).ToString("yyyy-MM-dd")
    + "',"
    + deptId
    + ");\" align='center' valign='middle' class='graph_red_grid_text'>"
    + Convert.ToDateTime(dr["IntervalStartTime"]).ToString("yyyy-MM-dd hh:mm:ss")
    + "</td>"
);

这应该生成:

<td onclick="GoToHourlyReport('2010-10-01', 1)" ...>
于 2012-12-06T13:43:06.283 回答