0

次のコード ブロックに問題があります。

    Dim scriptHere As System.Web.UI.HtmlControls.HtmlGenericControl = control.Page.FindControl("scriptHere")
            Dim controlID As String = ""
            Dim disabled As String = IIf(isDisabled, "true", "false")
            If TypeOf (control) Is ASPxEditBase Then
                controlID = control.ID
            End If
            Try
                control.ReadOnly = isDisabled

                Dim script As String = ""

                script &= "<script type=""text/javascript"">" & vbCrLf

                script &= "// <![CDATA[" & vbCrLf
                script &= "try {" & vbCrLf
                script &= "$('#<%= " + controlID + ".ClientID %>').attr('disabled', " + disabled + ");" & vbCrLf

                If selectedIndex <> -1 Then
                    control.SelectedIndex = selectedIndex
                    script &= "" + controlID + ".SetValue(" + selectedIndex.ToString() + ");" & vbCrLf
                End If
                script &= "} catch (e) { " & IIf(showErrors, "alert(e.message);", ";") & " }" & vbCrLf
                script &= "// ]]> " & vbCrLf


                script &= "</script>" & vbCrLf


                scriptHere.InnerHtml &= script
            Catch ex As Exception
                Console.Out.WriteLine(ex.ToString())
            End Try

問題は、例外がスローされることです。より正確には、「未定義」とだけ表示され、他には何も表示されません。問題は次の行にあると考えました。

script &= "$('#<%= " + controlID + ".ClientID %>').attr('disabled', " + disabled + ");" & vbCrLf

さらに、これがjQueryコマンドであるため、例外は「$」が原因であると想定できます。

追加情報:

  1. 必要な jQuery ライブラリがリンクされています。
  2. を追加してみましたjQuery(document).ready(function () {/.../});
  3. ScriptManager を使用して同じスクリプトを実行しようとしました。
  4. ページレンダリングの初期段階ではなく、page_load でこのサブルーチンを呼び出してみました
  5. また、このスクリプト ブロック内で jQuery ライブラリをリンクしようとしました。

それは今のところすべてです。前もって感謝します。

4

1 に答える 1

1

わかりました、これが機能するかどうかを確認してください-

script &= "$('#" + controlID.ClientID + "').attr('disabled', " + disabled + ");" & vbCrLf

インライン VB が正しいクライアント ID を引き出していないように見えますが、既にサーバー側で取得しているため、スクリプト文字列全体を一度に作成できるはずです。

于 2013-07-30T14:17:42.340 に答える