вызов функции JavaScript из inlinecode aspx - PullRequest
1 голос
/ 07 октября 2011

У меня есть рабочий код, вставленный ниже, в котором есть функция 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;
    }

Ответы [ 2 ]

1 голос
/ 07 октября 2011

Вы можете попытаться сделать это таким образом, просто включите внешний файл js поверх документа.

 <asp:Label ID="lblSts" runat="server">
      <script type="text/javascript">
            document.write(FormatStatus('<%# Eval("StsId").ToString() %>');
      </script>                                       
 </asp:Label>
1 голос
/ 07 октября 2011

JavaScript функция может быть вызвана только любым событием. Если вы хотите запустить функцию js в качестве начального метода, вы можете использовать window.onload. Таким образом, вы можете создать глобальный массив javascript на своей странице и заполнить его значениями идентификатора из c # за кодом и вызвать formatStatus для window.load:

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)

Затем вы должны написать функцию, которая принимает один аргумент с идентификатором сетки:

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 к любому событию, например, нажмите на какую-то кнопку. Таким образом, это изменит метки.

...