Выпадающий список в виде сетки на панели обновлений для запуска окна подтверждения на стороне клиента - PullRequest
1 голос
/ 19 ноября 2010
  • У меня есть вид сетки.
  • Вид сетки находится на панели обновлений.
  • Я добавил выпадающий список в столбце шаблона вида сетки.
  • Iу меня установлена ​​автоматическая обратная передача trueклиентские изменения выпадающих списков У меня есть всплывающее окно подтверждения, но независимо от того, что пользователь выбирает (нормально или отмена), оно не отправляет обратно
     <asp:DropDownList ID="ddlWinnerStatus" runat="server" CssClass="winStatusDDL" OnChange="return ShowWarning(this);"AutoPostBack="true" OnSelectedIndexChanged="ddlWinnerStatus_OnSelectedIndexChanged"></asp:DropDownList>
    

1 Ответ

1 голос
/ 19 ноября 2010

Во-первых, класс DropDownList не предоставляет свойство OnChange, поэтому я предполагаю, что вы делаете что-то вроде:

protected void Page_PreRender(object sender, EventArgs e)
{
    ddlWinnerStatus.Attributes.Add("onchange", "return ShowWarning(this);");
}

Теперь проблема заключается в том, что изнутри раскрывающийся список объединяет обратный вызов существующего атрибута onchange, который дает что-то вроде:

<select onchange="return ShowWarning(this); __doPostBack(...);">

На самом деле все сложнее, потому что AutoPostBack - это true, поэтому добавляется дополнительный вызов window.setTimeout(), но в этом суть, и вы можете видеть, что __doPostBack() никогда не вызывается, поскольку вы всегда возвращение рано из обработчика.

Чтобы достичь того, что вы хотите, вам придется делать всю работу самостоятельно, используя GetPostBackEventReference () , чтобы сгенерировать соответствующий вызов __doPostBack():

protected void Page_PreRender(object sender, EventArgs e)
{
    ddlWinnerStatus.Attributes.Add("onchange",
        String.Format(CultureInfo.InvariantCulture,
            "if (ShowWarning(this)) {{ {0}; return true; }} else return false;",
            ClientScript.GetPostBackEventReference(ddlWinnerStatus, "")));
}

Обратите внимание, что если вы это сделаете, свойство AutoPostBack станет избыточным (и фактически игнорируется).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...