1

インライン コードの一部として FormatStatus() という関数を含む作業コードを以下に貼り付けました。実際の定義はコード ビハインド (C#) にあります。私の質問は、関数 (FormatStatus()) を外部の JavaScript ファイルに移動した場合、インライン コードからどのように呼び出すことができるかということです。

 <asp:Label ID="lblSts" runat="server" Text= '<%# FormatStatus(Eval("StsId").ToString()) %>' >                                        
          </asp:Label>

私のコードビハインド:

    protected string FormatStatus(string Id)
    {
        string formatText = string.Empty;

        switch (int.Parse(Id))
        {
            case 0:
                formatText = "New";
                break;
            case 1:
                formatText = "Old";
                break;
          ..... 
        }

        return formatText;
    }
4

2 に答える 2

1

ドキュメントの上に外部 js ファイルを含めるようにしてください。

 <asp:Label ID="lblSts" runat="server">
      <script type="text/javascript">
            document.write(FormatStatus('<%# Eval("StsId").ToString() %>');
      </script>                                       
 </asp:Label>
于 2011-10-07T01:51:39.083 に答える
1

JavaScript 関数は、任意のイベントでのみ呼び出すことができます。js 関数を初期メソッドとして実行する場合は、window.onload を使用できます。そのため、ページにグローバルな JavaScript 配列を作成し、C# ビハインド コードから id 値を入力して、window.load で formatStatus を呼び出すことができます。

if (!Page.ClientScript.IsStartupScriptRegistered("preloadArray" + this.ClientID))
{
      string script = "<script type='text/javascript'> ";
      for (int i = 0; i < ...; i++)
      {
           script += "arr.push("+i.ToString()+");";
      }
      script += "formatStatus('" + gvAdminActiveAsgnments.ClientID + "');";            
      script += "</script>";

      Page.ClientScript.RegisterStartupScript(this.GetType(),
            "preloadArray" + this.ClientID, script);
 }

(Page_Load または ItemDataBound ハンドラーを使用できます)

次に、グリッドの ID を持つ引数を 1 つ取る関数を作成する必要があります。

function formatStatus(id){
 var table = document.getElementById(id);
 var rows = table.getElementsByTag('TR');
 for(var i=0; i<rows.length;i++){
   //puts into label from table row result for arr[i]
 }
}

テーブルのページ読み込み時に呼び出され、asp:GridView からレンダリングされます。formatStatus を任意のイベントにバインドできます。たとえば、ボタンをクリックします。したがって、ラベルが変更されます。

于 2011-10-07T00:37:37.757 に答える