#javascript #asp.net #inline-code
#javascript #asp.net #встроенный код
Вопрос:
У меня есть рабочий код, вставленный ниже, который имеет функцию 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;
}
Ответ №1:
Функция 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)
Затем вы должны написать функцию, которая принимает один аргумент с идентификатором grid:
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 к любому событию, например, нажать на какую-либо кнопку. Таким образом, это изменит метки.
Ответ №2:
Вы можете попробовать сделать это таким образом, просто убедитесь, что внешний js-файл включен поверх документа.
<asp:Label ID="lblSts" runat="server">
<script type="text/javascript">
document.write(FormatStatus('<%# Eval("StsId").ToString() %>');
</script>
</asp:Label>