在我的項目中,有3個用戶控件; BasicContact,BasicDetail和ActionTime。它們位於EditOrder.aspx頁面中。從javascript(VB.NET)執行代碼隱藏函數/子程序
有一個在BasicContact 「ReportDate」 屬性(日期型),單選按鈕列表 「rdl_Priority」(與來自 「prio_id」 字段的整數值)的BasicDetail和ActionTime 「了checkdate」 屬性。 ReportDate值來源於txt_ReportDate,txt_ReportTime和CheckDate值來源於txt_CheckDate和txt_CheckTime。
我的目標是在將日期添加到ReportDate並單擊radiobuttonlist後計算Checkdate。 Checkdate將根據ReportDate(日期)+ SLAHour(小時,從輸入爲prio_id的「GetSLAHour」方法獲得)計算,然後在txt_CheckDate和txt_CheckTime中設置文本。
現在,我可以使用Postback完成此任務。我創建自定義事件並在RadioButtonList selectedIndexchanged方法中引發它。之後,在EditOrder頁面後面的代碼中處理事件。這是我的代碼。
BasicDetail - 單選按鈕列表
<asp:RadioButtonList ID="rdl_Priority" runat="server" RepeatDirection="Horizontal" AutoPostBack="true" />
BasicDetail - 代碼隱藏
Public Event priorityClicked As System.EventHandler
Private Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
If Not IsPostBack Then SetupList()
End Sub
Private Sub SetupList()
Dim ctx As New StsDataContext
With rdl_Priority
Dim Result = (From r In ctx.Priorities Order By r.display_order)
If Result.Count > 0 Then
.DataTextField = "prio_name"
.DataValueField = "prio_id"
.DataSource = Result
.DataBind()
Else
lbl_Priority.Visible = False
rdl_Priority.Visible = False
End If
End With
End Sub
Protected Sub rdl_Priority_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles rdl_Priority.SelectedIndexChanged
RaiseEvent priorityClicked(sender, e)
End Sub
EditOrder - 代碼隱藏
Private Sub BasicDetail_priorityClicked(ByVal sender As Object, ByVal e As System.EventArgs) Handles BasicDetail.priorityClicked
Dim reportDate As Date? = BasicContact.ReportDate
Dim SLAHour As Integer? = GetSLAHour(BasicDetail.PriorityId)
If reportDate.HasValue AndAlso SLAHour.HasValue Then
ActionTime.CheckDate = CDate(reportDate).AddHours(CDbl(SLAHour))
End If
End Sub
不過,我不希望頁面被刷新(無回傳) 。我不知道如何從JavaScript調用函數或子。我已經嘗試過PageMethod,但是它在運行時會導致錯誤,說該方法不受支持。無論如何,如果有比從javascript調用代碼隱藏更好的方法,請讓我知道。
在此先感謝
啊好吧,我現在使用UpdatePanel解決了這個問題。但我不確定這是否會影響程序中的其他功能。 –
最後,我可以使用比UpdatePanel更好的PageMethod來解決問題。也許我在開始時誤用了它,導致錯誤(之前我把它放在用戶控件中,現在我把它移到了EditOrder頁面)。 –
你應該詳細說明你的解決方案,作爲你自己問題的答案。除了少量的代表之外,它使得整個帖子對於下一個看到類似內容的人更有用。 – CJM