我的自定义控件加载向导的回发问题 [英] Postback problem for my custom control load wizard

查看:66
本文介绍了我的自定义控件加载向导的回发问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当在init中加载控件时,我会遇到一些问题,但这仍然无法帮助我及时触发适当的回发事件.

I have some problem that happens when controls are loaded in init and it still doesn't help me to get proper postback event fired on time.

我正在尝试创建一个丰富的向导控件,该控件将通过使用动态控件加载避免标准的asp.net向导加载方式来实现切换,带有描述的链接,完全自定义的步骤以及子步骤的集成.

I am trying to create a rich wizard control that will enable switching, links with description, completely customized steps, integration of substeps - by using dynamic control load that is avoids standard asp.net wizard way of loading.

想法是在左侧导航,在右侧内容或从右侧运行并遍及整个区域的子步骤.

Idea is to have on left part navigation, on right part content, or substeps that are run from right part and that go over whole area.

下载源项目

推荐答案

非常感谢..好吧,我找到了答案-id是负载控制方法中的问题.我正在执行此向导..现在大多数事情都可以正常工作. 如果有人有兴趣看看它是如何工作的..有一些更新:

Many thanks.. well i found the answer - id was the problem, in load control method. I was doing this wizard.. well most of things work now. If someone is interested to see how does this works.. there are some updates:

public void LoadSplitViewControl(string path)
{
    SwitchNavigationView(NavigationView.SplitView);
    LastNavigationView = NavigationView.SplitView;
    LoadControl(SplitControlLoader, path, "LoadedControlSplit");
}

public void LoadSingleViewControl(string path)
{
    SwitchNavigationView(NavigationView.SingleView);
    LastNavigationView = NavigationView.SingleView;
    LoadControl(SingleControlLoader, path, "LoadedControlSingle");
}

public void LoadSingleViewControlAsClear(string path)
{
    SwitchNavigationView(NavigationView.SingleView);
    LastNavigationView = NavigationView.SingleView;
    LoadControlAsClear(SingleControlLoader, path, "LoadedControlSingle");
}

private void LoadControl(PlaceHolder holder, string path, string ID)
{
    UserControl ctrl = (UserControl)Page.LoadControl(path);
    ctrl.ID = ID;
    LastControlPath = path;
    holder.Controls.Clear();
    holder.Controls.Add(ctrl);
}

///因为我使用的是使用splitview的步骤加载控件和使用单个视图的子步骤控件,有时viewstate无效,所以会引发错误,但是您可以使用LoadSingleViewControlAsClear来解决,该方法将在以下方法中加载.

//as i am using steps loaded controls using splitview and substeps controls using single view sometimes viewstate will not be valid so error will be thrown but u can resolve this by using LoadSingleViewControlAsClear that will load below method.

private void LoadControlAsClear(PlaceHolder holder, string path, string ID)
{
    UserControl ctrl = (UserControl)Page.LoadControl(path);
    ctrl.ID = ID;
    LastControlPath = path;
    ctrl.EnableViewState = false;
    holder.Controls.Add(ctrl);
}

/我用于此向导的另一个很酷的想法是,我不使用viewstate而是使用会话对象来保存在步骤中收集的值.我的会话对象密钥是由经过身份验证的用户名和pageguid生成的-因此您可以加载许多页面,并且每个页面将处理不同的会话对象./

public Guid PageGuid
{
    get
    {
        if (PageGuidField.Value == "")
        {
            var _pageGuid = Guid.NewGuid();
            PageGuidField.Value = _pageGuid.ToString();
            return _pageGuid;
        }
        return new Guid(PageGuidField.Value);
    }
}

这篇关于我的自定义控件加载向导的回发问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆