FineUI 官方论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

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

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

搜索
查看: 3831|回复: 4
打印 上一主题 下一主题

关于使用window的IFrameUrl嵌套窗体的bug问题

[复制链接]
跳转到指定楼层
楼主
发表于 2012-4-19 18:21:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
问题:关于使用window的IFrameUrl嵌套窗体,单步执行代码时,每行代码都执行2遍。
部分代码
1、gridview中绑定行
this.EG_Data.Columns.Add(SetLinkButtonFieldItem(false, "DF_VIEWUSER", "查看组用户", false, string.Empty, "ViewUserList", "用户组", 0, true));
2、setLinkButtonFieldItem方法如下(就是新建一行)
/// <summary>
    /// 构造LinkButtonFieldItem(无确认提示) 显示固定值
    /// </summary>
    /// <param name="Hidden">是否隐藏</param>
    /// <param name="Id">列ID</param>
    /// <param name="Text">数据字段</param>
    /// <param name="HasToolTip">是否显示提示</param>
    /// <param name="DataTooltipField">提示字段</param>
    /// <param name="CommandName">命令</param>
    /// <param name="HeaderText">列标题</param>
    /// <param name="PixelWidth">列宽</param>
    /// <returns></returns>
    protected LinkButtonField SetLinkButtonFieldItem(bool Hidden, string Id, string Text, bool HasToolTip, string DataTooltipField, string CommandName, string HeaderText, int PixelWidth,bool EnableValue)
    {
        LinkButtonField NewItem = new LinkButtonField();
        NewItem.Enabled = EnableValue;
        NewItem.Hidden = Hidden;
        NewItem.ColumnID = Id;
        NewItem.Text = Text;
        if (HasToolTip)
        {
            NewItem.DataToolTipField = DataTooltipField;
        }
        NewItem.HeaderText = HeaderText;
        NewItem.CommandName = CommandName;
        if (PixelWidth != 0)
        {
            NewItem.Width = System.Web.UI.WebControls.Unit.Pixel(PixelWidth);
        }
        return NewItem;
    }
3、行绑定事件
protected override void GRID_RowCommand(object sender, GridCommandEventArgs e)
    {
        string id = ((ExtAspNet.Grid)sender).Rows[e.RowIndex].DataKeys[0].ToString();
        string rolename = ((ExtAspNet.Grid)sender).Rows[e.RowIndex].DataKeys[1].ToString();
       // ExtAspNet.LinkButtonField lb = this.EG_Data.FindControl(id);
        switch (e.CommandName)
        {
            case "ViewUserList":
               
                this.W_Command.IFrameUrl = "ManageRole/ManageRoleUser.aspx?MCODE=" + MODULECODE + "&&ROLEID=" + id;
                this.W_Command.Title ="["+rolename+"]角色管理";
                this.W_Command.Hidden = false;
                break;
        }
    }

上面用到的window(W_Command)的IframeUrl,嵌套打开另一个(ManageRoleUser.aspx)页面,则单步调试ManageRoleUser.aspx页面时,从onload方法开始(按F10),每行代码都执行2遍。

我换了示例中的 windowfield,不用LinkButtonField,就不会有代码执行2遍的问题
<ext:WindowField Width="60px" WindowID="Window1" Icon="TableEdit" ToolTip="编辑" DataIFrameUrlFields="Id,Name"
                                DataIFrameUrlFormatString="../grid/grid_iframe_window.aspx?id={0}&name={1}" Title="编辑"
                                IFrameUrl="~/alert.aspx" />


问:现在是因为extaspnet框架中,IframeUrl这个还有bug吗?
沙发
 楼主| 发表于 2012-4-24 11:33:18 | 只看该作者
怎么没人来看?
板凳
 楼主| 发表于 2012-5-3 14:23:36 | 只看该作者
期待回答~~~
地板
发表于 2012-5-5 17:44:03 | 只看该作者
小田 发表于 2012-5-3 14:23
期待回答~~~

写个简单的能直接运行的示例....
5#
发表于 2014-4-4 21:59:33 | 只看该作者
我也发现这个问题。
如果IFrameUrl 的值在后台赋值,那么在加载页面的时候会同时加载WindowAdd页面,再一次打开WindowAdd页面的时候会执行第二次。这样有些操作会出现很大的问题。
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                WindowAdd.IFrameUrl = "TZD_Add.aspx?XMGuid=" + ViewState["XMGuid"].ToString();
                btnAdd.OnClientClick = WindowAdd.GetShowReference();
                this.BindGrid();
            }
}
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-9-28 00:15 , Processed in 0.044537 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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