У меня есть функция Javascript, которая расширяет все панели управления ASP Ajax Accordion. Функция:
function expandEditAll() {
var behavior = $get("<%= accEditIncident.ClientID %>").AccordionBehavior;
for (var i = 0; i < behavior._panes.length; i++) {
behavior.get_Pane(i).content.style.display = 'inline';
behavior.get_Pane(i).content.height = behavior.get_Pane(i).content.scrollHeight;
behavior.get_Pane(i).content.style.height = behavior.get_Pane(i).content.scrollHeight + 'px';
}
}
Когда я вызываю эту функцию с помощью:
<a href="#" onclick="expandEditAll();">Expand All</a>
он работает отлично.
Но когда я называю это кодом С# следующим образом:
StringBuilder expand = new StringBuilder();
expand.AppendLine("<script type='text/javascript'>");
expand.AppendFormat(" expandEditAll();" + System.Environment.NewLine);
expand.AppendLine("</script>");
ClientScript.RegisterStartupScript(this.GetType(), "expandEdit", expand.ToString(), false);
это не сработает, а в инструментах разработчика Chrome я получаю сообщение об ошибке Uncaught TypeError: Cannot read property '_panes' of undefined
. Почему behavior
не определено здесь, когда я выполняю тот же самый вызов функции?
Я также пробовал:
ClientScript.RegisterClientScriptBlock(this.GetType(), "expandEdit", expand.ToString(), false);
но получил сообщение об ошибке Uncaught ReferenceError: $get is not defined
.
Попробуйте это, я смог выполнить функцию javascript.
StringBuilder script = new StringBuilder();
script.Append(@"<script language='javascript'>");
script.Append(@"expandEditAll()");
script.Append(@"</script>");
Page.ClientScript.RegisterStartupScript(this.GetType(), "expandEdit", script.ToString());
undefined
ошибку вvar behavior
при выполнении функции. Во всяком случае, я попробовал ваше предложение, и оно не имело никакого значения.