Всплывающее окно Gridview не открывается из события RowCommand, соответствующего щелчку кнопки Link

У меня есть кнопка Link в поле шаблона Gridview. Я хочу перенаправить на другую страницу во всплывающем окне нестандартного размера из события RowCommand.

Примечание. Здесь я не хочу вызывать свойство OnClientScript LinkButton для всплывающего окна пользовательского размера openJavascript. Я хочу сохранить Gridrow в объект Session и открыть окно только из кода на стороне сервера.

Вот код:

<ItemTemplate>
    <itemstyle width="5%" />
    <asp:LinkButton CssClass="l_link" ID="lnkView" runat="server"  
      DataTextField="overWriteType" 
      CommandName="overWriteType"
      CommandArgument='<%# Eval("overWriteType") %>'
      Text='<%# Eval("overWriteType") %>'></asp:LinkButton>
</ItemTemplate>
protected void gvKeys_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "overWriteType")
    {
        System.Text.StringBuilder sb = new System.Text.StringBuilder();
        sb.Append("&lt;script language='javascript'>");
        sb.Append("window.open('OverwriteConfiguration.aspx', 'PopUp',");
        sb.Append("'top=0, left=0, width=500, height=500, menubar=no,toolbar=no,status,resizable=yes,addressbar=no');<");
        sb.Append("/script>");
        ScriptManager.RegisterStartupScript(Page, GetType(), "OpenWindow", sb.ToString(), true);
    }
}

Приведенный выше код не открывает ни одно окно.


person Rita    schedule 30.09.2015    source источник
comment
Разве это не вызов ajax?   -  person Shaharyar    schedule 30.09.2015


Ответы (1)


Вы не хотите использовать RegisterStartupScript в этом случае, вы хотите добавить обработчик onclick для своей кнопки, и вместо этого вы хотите сделать это в RowDataBound:

protected void gvKeys_RowDataBound(object sender, GridViewRowEventArgs e)
{

  if (e.Row.RowType == DataControlRowType.DataRow)
  {

    System.Text.StringBuilder sb = new System.Text.StringBuilder();
    sb.Append("window.open('OverwriteConfiguration.aspx', 'PopUp',");
    sb.Append("'top=0, left=0, width=500, height=500, menubar=no,toolbar=no,status,resizable=yes,addressbar=no');<");

    LinkButton l = (LinkButton)e.Row.FindControl("lnkView");

    l.Attributes.Add("onclick", sb.ToString());

   }

}
person Rick S    schedule 30.09.2015
comment
Вы имеете в виду событие RowDataBound? - person Rita; 30.09.2015