2012-07-09 99 views
0

我在SharePoint 2010 Foundation中有一个SPGridView,其中包含来自子网站的公告。我只有一列,一个HyperLinkField显示公告的标题,并链接到项目的变形。使用JavaScript在SPGridView中使用链接打开模态框

使用SPDataSiteQuery收集数据。

我想要的是运行一个JavaScript的链接,添加到页面上的一个内容编辑器Web部件,它将打开一个Modal Box并在其中显示该变形。

我的代码目前看起来像下面,并在同一个窗口中成功打开dispform,但我现在想要它调用JavaScript。

HyperLinkField hyperFieldTask = new HyperLinkField(); 
      hyperFieldTask.HeaderText = "News"; 
      hyperFieldTask.DataTextField = "Title"; 

      string[] itemUrl = { "FileDirRef" }; 
      hyperFieldTask.DataNavigateUrlFields = itemUrl; 
      hyperFieldTask.DataNavigateUrlFormatString = ""; 
      hyperFieldTask.SortExpression = "Title"; 

      this.grid.Columns.Add(hyperFieldTask); 

我已经尝试了几种解决方案,但我所得到的只是一个不活动的链接。

hyperFieldTask.DataNavigateUrlFormatString = "JavaScript:ShowDialog('url')"; 

hyperFieldTask.DataNavigateUrlFields = "JavaScript:ShowDialog('url')"; 

没有我做的似乎工作。

我错过了一些明显的东西吗?

感谢您的帮助。

编辑:

我尝试使用NavigateUrl,它确实调用JavaScript。

hyperFieldNews.NavigateUrl = "javascript:ShowDialog('http://www.google.com', '600')"; 

下一步是现在,而不是使用www.google.com作为url我想使用“FileDirRef”的值。

回答

0

添加下面的JavaScript函数:

<script type="text/javascript"> function ModalPopup(url, title) { var options = SP.UI.$create_DialogOptions(); options.url = url; options.title = title; options.dialogReturnValueCallback = function() { SP.UI.ModalDialog.RefreshPage(SP.UI.DialogResult.OK); }; SP.UI.ModalDialog.showModalDialog(options); } </script>

现在你可以创建一个链接,并调用该函数:

HyperLink hyper1 = new HyperLink(); string popUpPageUrl = "javascript:ModalPopup('" + url + "','Display Item')"; hyper1.NavigateUrl = popUpPageUrl; hyper1.Text = "News";