我在asp.net中设置了一个Calendar控件,如下所示......
<asp:Calendar ID="Calendar1" EnableViewState="False" OnDayRender="Calendar_DayRender" OnSelectionChanged="Cal_SelectionChanged"
FirstDayOfWeek="Default" ShowNextPrevMonth="False" SelectionMode="Day" TitleFormat="MonthYear"
runat="server"></asp:Calendar>
然后我有一些服务器端的asp / vb.net代码,它将一些文本和javascript附加到一个单元格中,该单元格的值可以在方法中找到。
Sub Calendar_DayRender(ByVal s As Object, ByVal e As DayRenderEventArgs)
e.Cell.Text = "<table " onclick=""javascript:__doPostBack('cal1','" & strID & "')""" & " ><tr valign=""top""><td>" & e.Day.Date.Day & "</td></tr><tr><td align=""left"">" & strCount & "</td></tr></table>"
End Sub
然后我有以下事件处理程序绑定到日历控件。
Protected Sub Cal_SelectionChanged(ByVal s As Object, ByVal e As EventArgs)
lblSelectedDate.Text = "Invoked Method"
End Sub
我试图从强制javascript方法调用上面的方法。它工作正常,直到我更改了软件并引入了Master Pages。现在它根本不喜欢它。我想知道是否有人遇到过此问题以及解决问题的方法。
答案 0 :(得分:2)
添加母版页后,javascript端的渲染ID已更改,与您在代码后面使用的控件ID不同。
要解决此问题,请使用Calendar1.ClientID
代码,如果您在页面上呈现,则使用<%=Calendar1.ClientID%>
。
如果您在后面的代码中使用它,请直接使用Calendar1.ClientID
。
并将"Calendar1"
更改为Calendar1.ClientID
例如,这一行可能是
e.Cell.Text = "<table " onclick=""javascript:__doPostBack('"
& Calendar1.ClientID & "','" & strID & "')""" & ...
我希望我说的很清楚。