FineUI 官方论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

本论坛已关闭(禁止注册、发帖和回复)
请移步 三石和他的朋友们

FineUI首页 WebForms - MVC & Core - JavaScript 常见问题 - QQ群 - 十周年征文活动

FineUI(开源版) 下载源代码 - 下载空项目 - 获取ExtJS - 文档 在线示例 - 版本更新 - 捐赠作者 - 教程

升级到 ASP.NET Core 3.1,快、快、快! 全新ASP.NET Core,比WebForms还简单! 欢迎加入【三石和他的朋友们】(基础版下载)

搜索
查看: 6746|回复: 8
打印 上一主题 下一主题

grid双击事件中向父窗口中新增选项卡

[复制链接]
跳转到指定楼层
楼主
发表于 2014-9-24 16:01:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
今天要实现一个功能,就是在grid表格双击行事件中根据双击行的内容在父窗口上新增加一个选项卡,grid采用了数据库分页,在第一页时双击行没有问题,可以在父窗口上新增上选择卡,如图一;翻页到第二页,双击grid行,出现错误,无法新增选项卡,重新翻页到第一页,双击行也无法新增选项卡,错误如图二.希望能给分析一下是什么问题了


图一




图二


前端代码

  1. <body>
  2.     <form id="form1" runat="server">
  3.     <f:PageManager ID="PageManager1" runat="server" AutoSizePanelID="P1" />
  4.     <f:Panel ID="P1" runat="server" BodyPadding="5px" ShowBorder="true" ShowHeader="false" Title="Panel" Layout="Fit">
  5.         
  6.         <Items>
  7.             <f:HiddenField ID="H_tj" runat="server"></f:HiddenField>
  8.             <f:Grid ID="DG_show" runat="server"  ShowHeader="false" DataKeyNames="用户ID,试卷ID,状态,名称" AllowPaging="True" EnableRowDoubleClickEvent="True" EnableCheckBoxSelect="true" IsDatabasePaging="True">
  9.                 <Columns>
  10.                     <f:BoundField DataField="用户ID" HeaderText="用户ID" TextAlign="Left"/>
  11.                     <f:BoundField DataField="名称" HeaderText="名称" TextAlign="Center" />
  12.                     <f:BoundField DataField="得分" HeaderText="得分" TextAlign="Center" />
  13.                     <f:BoundField DataField="状态" HeaderText="状态" TextAlign="Center" />
  14.                     <f:BoundField DataField="日期" HeaderText="日期" TextAlign="Center" Width="120" DataFormatString="{0:yyyy-MM-dd}" />
  15.                     <f:LinkButtonField HeaderText="查阅" CommandName="CY" Icon="zoom" TextAlign="Center" Width="90" />
  16.                     <f:TemplateField Width="1">
  17.                         <ItemTemplate>
  18.                             <asp:TextBox ID="TextBox1" runat="server" CssClass="RowHeight"></asp:TextBox>
  19.                         </ItemTemplate>
  20.                     </f:TemplateField>
  21.                 </Columns>
  22.             </f:Grid>
  23.         </Items>
  24.     </f:Panel>
  25.     </form>
  26.     <script type="text/javascript">
  27.         function OpenTabUrl(url, text, codeid) {
  28.             //如果已经存在该Tab,则刷新
  29.             var iframeModule = window.parent.frames[codeid];
  30.             if (iframeModule != null) {
  31.                 //如果已经打开的,则刷新页面
  32.                 iframeModule.location.reload();
  33.             } else {
  34.                 parent.F('RegionPanel1_R_right_mainTabStrip').addTab({ id: codeid, url: url, title: text, closable: true }); //关键在于使用了parent.,找到了标签
  35.             }
  36.         }
  37.     </script>
  38. </body>
  39. </html>
复制代码
后端代码:

  1. Protected Sub DG_show_RowDoubleClick(ByVal sender As Object, ByVal e As FineUI.GridRowClickEventArgs) Handles DG_show.RowDoubleClick
  2.         '双击打开考卷信息
  3.         Dim guid As String = ""
  4.         Dim xh As Integer = e.RowIndex
  5.         Dim yhid As String = ""
  6.         Dim sjid As String = ""
  7.         Dim sjzt As String = ""
  8.         Dim yhm As String = ""
  9.         Dim url As String = ""
  10.         yhid = DG_show.DataKeys(xh)(0)
  11.         sjid = DG_show.DataKeys(xh)(1)
  12.         sjzt = DG_show.DataKeys(xh)(2)
  13.         yhm = DG_show.DataKeys(xh)(3)
  14.         If sjzt = "已批阅" Then
  15.             url = "kaoshi/cysj.aspx?sjid=" & sjid & "&yhid=" & yhid
  16.             PageContext.RegisterStartupScript("OpenTabUrl('" & url & "','" & yhm & "的考卷','" & sjid + 100 & "')")
  17.             Exit Sub
  18.         Else
  19.             info = " 本份试卷还没有批阅完毕,所以无法查看批阅结果及答案!"
  20.             Alert.ShowInTop(info, "信息提示", MessageBoxIcon.Information)
  21.             Exit Sub
  22.         End If

  23.     End Sub
复制代码



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
沙发
 楼主| 发表于 2014-9-24 16:13:59 | 只看该作者
我的系统是win2003,用的是360极速浏览器,感觉像是翻页操作后找不到parent.F('RegionPanel1_R_right_mainTabStrip')中找不到RegionPanel1_R_right_mainTabStrip了似的
板凳
发表于 2014-9-24 16:32:56 | 只看该作者
用这个试试
function Open_TabTest(tabID, url, title, icon)
            {
                parent.addExampleTab.apply(null, [tabID, url, title, icon, true]);           
            }

地板
 楼主| 发表于 2014-9-24 17:26:42 | 只看该作者
舞柯庶 发表于 2014-9-24 16:32
用这个试试
function Open_TabTest(tabID, url, title, icon)
            {

你的 那个不行,在后台代码中调用时无法在父窗口中新增选项卡.
5#
发表于 2014-9-24 17:38:44 | 只看该作者
我一直都是这样做的,我的框架结构和 在线事例是一样的
双击Grid 增加Tab 和点击左边菜单生成的TAB是邻居
6#
 楼主| 发表于 2014-9-24 17:40:08 | 只看该作者
舞柯庶 发表于 2014-9-24 17:38
我一直都是这样做的,我的框架结构和 在线事例是一样的
双击Grid 增加Tab 和点击左边菜单生成的TAB是邻居 ...

我按实例中的操作就一直错误,根本无法在父窗口上新增选项卡.你的父窗口中引用default.js和注册 ids了没有呀?
7#
发表于 2014-9-24 17:56:07 | 只看该作者
引用和注册了
8#
 楼主| 发表于 2014-9-24 18:13:47 | 只看该作者

我引用和注册了都不起作用,不知为什么,我用的是vb.net,你们一般都是用的C#,能发个你的例子吗?我的QQ:113243673
9#
 楼主| 发表于 2014-9-25 11:38:08 | 只看该作者
总算解决问题了,感谢舞柯庶朋友,感谢fineui群中的桂林-dwc,桂林-dwc提供的方法是最简单实用的了,前端代码是:
  1. <script type="text/javascript">

  2.        function OpenTabUrl(url, text, codeid) {
  3.            //如果已经存在该Tab,则刷新
  4.                       var iframeModule = window.parent.frames[codeid];
  5.                       if (iframeModule != null) {
  6.                           //如果已经打开的,则刷新页面
  7.                           iframeModule.location.reload();
  8.                       } else {
  9.                           parent.F('RegionPanel1_R_right_mainTabStrip').addTab({ id: codeid, url: url, title: text, closable: true }); //关键在于使用了parent.,找到了标签
  10.                       }
  11.                   }
  12.     </script>
复制代码

后端代码是:
PageContext.RegisterStartupScript("OpenTabUrl('" & url & "','" & sjmc & "','" & sjid & "')")
不需要引用defaults.js,不需要注册ids,我在用的时候出现grid表格翻页后无法新增选项卡的问题是因为在page_load事件中对表格加载了数据 ,但是忘记写在 if not ispostback then里了,现在已经没有问题了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|FineUI 官方论坛 ( 皖ICP备2021006167号-1 )

GMT+8, 2024-4-29 22:21 , Processed in 0.052486 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表