Попытка вызвать Shadowbox IFrame с помощью Jquery из asp: gridview datarow. Я не могу получить правильные кавычки в строку:
<asp:ImageButton ID="btnEdit" runat="server"
OnClientClick='<%# "javascript:popAccount(\'"+
Eval("id", "Popup.aspx?id={0}")+"\');" %>' />
Сообщение об ошибке анализатора: тег сервера сформирован неправильно.
Без экранированных одинарных кавычек (не может работать, но правильно анализирует):
<asp:ImageButton ID="btnEdit" runat="server"
OnClientClick='<%# "javascript:popAccount("+
Eval("id", "Popup.aspx?id={0}")+");" %>' />
HTML на стороне клиента, как и ожидалось:
onclick="javascript:popAccount(Popup.aspx?id=3ce3b19c-1899-4e1c-b3ce-55e5c02f1);"
Как мне получить кавычки в Javascript?
Редактировать: добавлено решение. Это не очень универсально, так как типы данных должны быть известны для доступа к свойству id. Ключ (как определено в параметре GrodView DataKeyNames), по-видимому, не отображается в аргументе события. Но это работает.
protected void editGrid_RowDataBound(object sender, GridViewRowEventArgs e)
{
// do not look at header or footer
if (e.Row.RowType == DataControlRowType.DataRow)
{
ImageButton btn = e.Row.FindControl("btnPopup") as ImageButton;
if (btn != null)
{
btn.OnClientClick =
"javascript:popAccount('EditAccountPopup.aspx?"+
Constants.acctidParam+"="+
((tb_account)(e.Row.DataItem)).id.ToString()+"');";
}
}