FineUI 官方论坛

标题: FineUI.Button事件,采用服务器响应方法出现问题 [打印本页]

作者: renbovip    时间: 2015-11-10 13:00
标题: FineUI.Button事件,采用服务器响应方法出现问题
大致代码如下:
protected void Page_Load(object sender, EventArgs e)
{
    .......(省略)
    FineUI.Button btn = new FineUI.Button();
    btn.ID = item;
    btn.Text = method.Description;
    btn.Icon = Icon.Add;
    btn.Click += new EventHandler(MethodButtonScriptReference);  
    .......
}


public void MethodButtonScriptReference(object sender,EventArgs e)
{
    (执行这里出错!)
    PageContext.RegisterStartupScript(GetmethodCode());

}

public string GetmethodCode()
{
     Window win = new Window();
     win.ID = panelName;
     win.Hidden = true;
     win.EnableIFrame = true;
     win.EnableResize = true;
     win.WindowPosition = WindowPosition.GoldenSection;
     win.Target = Target.Parent;
     win.IsModal = true;
     PageManager.Instance.Controls.Add(win);
     string url = "~/Pages/EditPanelPage.aspx";
     return  win.GetShowReference(url,"新增",new Unit(600),new Unit(400));
}


调用的顺序是页面上添加一个按钮,按钮事件由服务器端处理,然后调用PageContext.RegisterStartupScript返回一段js脚本,在这里就出错了。
如果换用btn.OnClientClick = MethodButtonScriptReference(btn)使用脚本就没问题,但我希望使用事件响应函数,这样每次调用GetmethodCode()可以返回不同的脚本,请教下如何解决问个问题?

作者: zy32002    时间: 2015-11-10 13:14
你那样写是不行的,不能添加控件,除非你刷新页面才可以。
添加控件只能在page_load,page_init等事件里写。
作者: sanshi    时间: 2015-11-10 14:13
1. 所有动态创建控件的代码放到 Page_Init 中,参考:http://www.cnblogs.com/sanshi/archive/2012/11/19/2776672.html

2. 这样不对:PageManager.Instance.Controls.Add(win);,Window控件请直接添加到 <form> 中
作者: renbovip    时间: 2015-11-10 15:10
代码有些错误,动态创建控件确实是放在page_init中的,是传的代码写错了,另外PageManager.Instance.Controls.Add(win)确实也能运行,应该问题不在这里




欢迎光临 FineUI 官方论坛 (https://fineui.com/BBS/) Powered by Discuz! X3.4