ASP.. NET javascript参数为空

ASP.NET javascript parameter is null

本文关键字:参数 javascript NET ASP      更新时间:2023-09-26

我有一些javascript来更改日历扩展程序控件的功能,我想向该控件传递一个参数(一个ID),但该参数从未被设置。当我在js文件中硬编码参数时,该函数工作,但我很难找出为什么我可以将参数传递给函数。

下面是我使用的aspx代码的一个例子:

<ajax:CalendarExtender ID="clxStartMonth" runat="server" TargetControlID="txtStartMonth" Format="MM/yyyy" DefaultView="Months" ClientIDMode="Static" OnClientHidden="onCalendarHidden('clxStartMonth');" OnClientShown="onCalendarShown('clxStartMonth');"  ></ajax:CalendarExtender>

正如你所看到的,我正试图将控制ID传递给OnClientHidden和onclientshowed事件触发的函数。

下面是javascript函数:

function onCalendarHidden(clx) {
var cal = $find(clx);
if (cal._monthsBody) {
    for (var i = 0; i < cal._monthsBody.rows.length; i++) {
        var row = cal._monthsBody.rows[i];
        for (var j = 0; j < row.cells.length; j++) {
            Sys.UI.DomEvent.removeHandler(row.cells[j].firstChild, "click", call);
        }
    }
}
}
function onCalendarShown(clx) {
var cal = $find(clx);
cal._switchMode("months", true);
if (cal._monthsBody) {
    for (var i = 0; i < cal._monthsBody.rows.length; i++) {
        var row = cal._monthsBody.rows[i];
        for (var j = 0; j < row.cells.length; j++) {
            Sys.UI.DomEvent.addHandler(row.cells[j].firstChild, "click", call);
        }
    }
}
}
function call(eventElement) {
var target = eventElement.target;
switch (target.mode) {
    case "month":
        var cal = $find("clxStartMonth");
        cal._visibleDate = target.date;
        cal.set_selectedDate(target.date);
        cal._blur.post(true);
        cal.raiseDateSelectionChanged();
        break;
}
}

我能做些什么来解决这个问题吗?

在运行时查看HTML源代码(右键单击页面并选择查看源代码)。验证控件clxStartMonth实际上是控件的ID,并且它没有被更改为其他东西(例如ctl0$clxStartMonth…)。如果控件ID已被更改,则将clxStartMonth控件的ClientIDMode属性设置为"Static"。