FineUI 官方论坛

标题: 关于使用window的IFrameUrl嵌套窗体的bug问题 [打印本页]

作者: 小田    时间: 2012-4-19 18:21
标题: 关于使用window的IFrameUrl嵌套窗体的bug问题
问题:关于使用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
怎么没人来看?
作者: 小田    时间: 2012-5-3 14:23
期待回答~~~
作者: sanshi    时间: 2012-5-5 17:44
小田 发表于 2012-5-3 14:23
期待回答~~~

写个简单的能直接运行的示例....
作者: ecloudzhao    时间: 2014-4-4 21:59
我也发现这个问题。
如果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 官方论坛 (https://fineui.com/bbs/) Powered by Discuz! X3.4