-1

aspx ページ

<asp:UpdatePanel ID="asypnl" runat="server">
   <ContentTemplate>
      <asp:Wizard />
      <StartNavigationTemplate>
      </StartNavigationTemplate>
      <FinishNavigationTemplate>
      </FinishNavigationTemplate>
      <WizardSteps>
         <asp:WizardStep ID="WizardStep1" runat="server">
            <asp:Panel runat="server" ID="pnlGiftInfo">
               <td>
                  <asp:DropDownList ID="DropDownPayment" runat="server">
                     <asp:ListItem Selected="True" Value="0">Gift</asp:ListItem>
                     <asp:ListItem Value="1">Pledge</asp:ListItem>
                  </asp:DropDownList>
               </td>
            </asp:Panel>
         </asp:WizardStep>
      </WizardSteps>
      <asp:Panel runat="server" ID="pnlOutput">
         <%-- Content comes from the database OutputHtml Colunm--%>
      </asp:Panel>
   </ContentTemplate>
</asp:UpdatePanel>

データベース列

<p>Thank you for your <span id "ddlGift">gift</span><span id "ddlPayment">payment</span> of
    {Amount} to the {Comm}
<script type="text/javascript" language="javascript">
        var p = document.getElementById("DropDownPayment");
        var eledropdownPayment = p.options[p.selectedIndex].value;
        var ddlGift = document.getElementById("ddlGift");
        var ddlPayment = document.getElementById("ddlPayment");
        if (eledropdownPayment == "0") {
            ddlGift.style.display = "block";
            ddlPayment.style.display = "none";
        } else {
            ddlGift.style.display = "none";
            ddlPayment.style.display = "block";
        }
</script>

ウィザード ctrl で最終ステップを送信した後、データベース内に構築された Html タグ構造を使用して表示する結果を取得しています。データベース内のスクリプトが実行されていないことを除いて、すべて正常に機能しているため、両方のスパン テキストを確認できます。ドロップダウンの選択に従ってスパンを選択したいだけです。これらのスパン タグはページ ロード イベントには存在しないため、aspx にスクリプトを記述できません。ウィザードの ctrl の 2 つの手順が完了すると、出力パネル内に表示されます。ドロップダウンの選択に従って、SAPNを表示する方法が必要です...ありがとう。長い説明で申し訳ありません。

4

3 に答える 3

1

データベースからスパン タグを含む全文を取得する代わりに、設計時に 2 つのスパン ID を配置するのが最も簡単な解決策です。金額やその他の詳細とともに他のテキストをデータベースから取得し、適切な位置に配置します。

設計時に配置してください

{Amount} のデータベースから {Comm} に送信されます

これで、javascript でスパンを制御できるようになり、それに応じてスパンを表示/非表示にすることができます。

于 2012-09-28T18:22:41.887 に答える
0

私が正しく理解している場合、html + javascriptはajaxを介してDBから取得されます。その場合、ブラウザがhtmlコンテンツをDOMにロードする時間を与えるために、javascriptの実行を少し遅らせる必要があります。setTimeout()次のような呼び出しのjavascriptコード:

            setTimeout(function() {
                var p = document.getElementById("DropDownPayment");              
                var eledropdownPayment = p.options[p.selectedIndex].value;              
                var ddlGift = document.getElementById("Gift");              
                var ddlPayment = document.getElementById("ddlSelectionPledge");              
                    if (eledropdownPayment == "0") 
                    {                  
                    ddlGift.style.display = "block";                  
                    ddlPayment.style.display = "none";              
                    } 
                    else 
                    {                  
                    ddlGift.style.display = "none";                  
                    ddlPayment.style.display = "block";              
                    }
             }, 300); //delay execution by 300 miliseconds
于 2012-09-28T17:59:10.400 に答える
0

スクリプトを実行するには、これらのスクリプト タグをページの中央に追加するだけでは不十分です。最も簡単なオプションは、RegisterClientScriptBlockメソッドを使用することです。サーバー側では、そのメソッドを呼び出して、スクリプトを 2 番目のパラメーターとして渡す必要があります。

別のオプションは、JavaScript に実際に関数を含めることです。要素のコンテンツが設定されたら、関数を呼び出します。重要な点は、コードが自動的に実行されないことです。

于 2012-09-28T18:14:01.337 に答える