私のプロジェクトには、3 つのユーザー コントロールがあります。BasicContact、BasicDetail、および ActionTime。それらは EditOrder.aspx ページにあります。
BasicContact には「ReportDate」プロパティ(日付型)、BasicDetail には RadioButtonList「rdl_Priority」(「prio_id」フィールドの整数値)、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 - RadioButtonList
<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 からコード ビハインドを呼び出すよりも良い方法があれば教えてください。
前もって感謝します