使用服务器生成的javascript调用回发

时间:2014-07-16 12:31:09

标签: javascript asp.net vb.net

我在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。现在它根本不喜欢它。我想知道是否有人遇到过此问题以及解决问题的方法。

1 个答案:

答案 0 :(得分:2)

添加母版页后,javascript端的渲染ID已更改,与您在代码后面使用的控件ID不同。

要解决此问题,请使用Calendar1.ClientID代码,如果您在页面上呈现,则使用<%=Calendar1.ClientID%>

如果您在后面的代码中使用它,请直接使用Calendar1.ClientID

并将"Calendar1"更改为Calendar1.ClientID

例如,这一行可能是

e.Cell.Text = "<table " onclick=""javascript:__doPostBack('"
               & Calendar1.ClientID & "','" & strID & "')""" & ...

我希望我说的很清楚。