0

我正在 c# dot net 中开发一个屏幕,其中我有一个搜索屏幕,其中包含一个包含一些查询字符串值的超链接字段,在超链接字段的单击上,我必须打开一个工作正常的弹出窗口,但我不想要地址栏或菜单要在弹出窗口中显示的项目的大小也应该是特定的,谁能告诉我如何实现它。

我正在使用下面的代码,但是它只是改变窗口的大小而不是隐藏菜单等,而且第一个弹出窗口以全尺寸加载,然后更改为我指定的大小。

<asp:HyperLinkField DataNavigateUrlFields="FileName" DataTextField="FileName"
Target="_blank" DataNavigateUrlFormatString="javascript:var NewWin=window.open
('abc.aspx?EMPId={0}',null,'width=800,height=200,top=100,left=100,scrollbars=no,
directories=no,status=no,toolbar=no,resizable=no');"HeaderText="EMPId">

</asp:HyperLinkField>

另外,我可以使用一个链接按钮,这个弹出窗口工作正常,但是我需要在网格的行数据绑定中添加查询字符串到 URL,单击我的链接按钮和弹出窗口会打开,但是我不能这样做所以通过使用下面的代码。

protected void grdDisplayResult_RowDataBound(object sender, GridViewRowEventArgs e)
{

if (e.Row.RowType == DataControlRowType.DataRow)
{
HyperLink hyperlink = (HyperLink)e.Row.Cells[2].Controls[0];
Label lblRowNumber = ((Label)e.Row.FindControl("lblRowNum"));
hyperlink.NavigateUrl += "&RowNum=" + lblRowNumber.Text;
}
} 

如果我为其中任何一个找到解决方案,那将有很大帮助。

4

3 回答 3

0

我想也许你可以使用链接按钮而不是超链接。

于 2012-10-05T05:35:16.723 回答
0

尝试使用HTMLAnchor而不是asp:Hyperlink

网格:

 <asp:TemplateField HeaderText="Options">
   <ItemTemplate>
       <a href="javascript:void(0);" id="aFooLink" runat="server">
        ClickMeDamnit</a>
   </ItemTemplate>
 </asp:TemplateField>

代码隐藏:

protected void grdDisplayResult_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        HyperLink aFooLink = (HyperLink)e.Row.Cells[2].Controls[0];
        aFooLink.Attributes.Add("onclick", "window.open('abc.aspx?EMPId=0','window','toolbar=no, menubar=no, resizable=yes,location=no,center:no;height=200px,width=300px,Top=1500,left=1500;statusbar:no;');");            
    }
} 

希望对你有效。

于 2012-10-05T05:38:29.073 回答
0

您可以通过调用 javascript 函数并向其传递参数来实现此目的。您可以使用 gridview 事件找到您的控制服务器端RowDataBound并附加客户端事件以打开弹出窗口。Eval在那里,您可以使用& 打开带有所需查询字符串值的弹出窗口将参数传递给您的函数。像这样的东西在aspx上

    <script language="text/javascript">
     function OpenPopup(id,name)
     {
          window.open('myWindow.aspx?id='+id+'&name='+name,'_blank',width=800,height=200,top=100,left=100,scrollbars=no,menubar=no,directories=no,status=no,toolbar=no,resizable=no,url=no');
     }
     </script>

在gridview的服务器端内部RowDataBound事件

if (e.Row.RowType == DataControlRowType.DataRow)
        { 
          LinkButton myLinkBtn= (LinkButton)e.Row.FindControl("yourControlid");
          if(myLinkBtn !=null)
          {
              myLinkBtn.Attributes.add('onclick','javascript:OpenPopup('"+ Eval(e.row.DataItem,"yourDbField1")+ "','"+ Eval(e.row.DataItem,"yourDbField2")+ "');return false;");
          }
        }
于 2012-10-05T06:46:19.860 回答