zoukankan      html  css  js  c++  java
  • coolite 中后台动态添加portlet

      今天老大让我模仿 www.igoogle.com 做一个可以拖拽的项目审查页面,一接到这个活,我就想到用 Portal 做,

    可是难点呢就是如何动态添加,这个问题很棘手。来不及细想,就先动手了(个人觉得,只是想想想不出个所以然来)。

      我的前台代码如下:

    <ext:Portal ID="Portal1" runat="server">
    <Body>
    <ext:ColumnLayout ID="ColumnLayout1" runat="server">
    <ext:LayoutColumn ColumnWidth=".5">
    <ext:PortalColumn ID="PortalColumn1" runat="server" StyleSpec="padding:10px 0 10px 10px">
    <Body>
    <ext:AnchorLayout ID="AnchorLayout1" runat="server">

    </ext:AnchorLayout>
    </Body>
    </ext:PortalColumn>
    </ext:LayoutColumn>
    <ext:LayoutColumn ColumnWidth=".5">
    <ext:PortalColumn ID="PortalColumn2" runat="server" StyleSpec="padding:10px 10px 10px 10px">
    <Body>
    <ext:AnchorLayout ID="AnchorLayout2" runat="server">
    </ext:AnchorLayout>
    </Body>
    </ext:PortalColumn>
    </ext:LayoutColumn>
    </ext:ColumnLayout>
    </Body>
    </ext:Portal>


      最初,我是想直接在 PortalColumn 里面加,结果也是加上了,但是却不是按照自己想要的布局,添加的那个 portlet 他跑到页面顶端去了,

    很是郁闷。于是在网上查资料,很遗憾,一无所获。。。坐在电脑前,我陷入了沉思,是我搜索水平差呢,还是人家就没碰到过这样的问题呢,最后的结论是,

    肯定是我搜索能力有限,这么普遍的问题,不可能没人遇到过吧。。。

      于是一个人在那套方法,也套不出来,我的极限就快要被摧毁了。。。

      没办法,老大的任务,必须完成,于是找同事求助,那同事把我的源码一看,啊,“你忽略掉了吧,这个 coolite 你添加控件的话,要严格按照他的容器互相的包含关心来的”

    一语惊醒梦中人,原来如此。。自己学 coolite 这么久了居然连这么简单的道理都没弄清楚,惭愧。。。

      最后总结的后台代码是:
      

     
           int count = notFinishedProcInfoList.Count / 2;


    for (int i = 0; i < count; i++)
    {
    PrjBaseinfo item
    = notFinishedProcInfoList[i];
    Portlet port
    = new Portlet();
    port.ID
    = item.ID.ToString();
    port.Title
    = "项目名称:" + item.PROJECTNAME;
    //port.Height = 300;
    port.AutoHeight = true;
    port.AutoScroll
    = true;

    Literal LitMyTaskAgain
    = new Literal();
    LitMyTaskAgain.Text
    = ProcTask.DrawMyAllTaskList_NotFinished_PJJ(strUserCode, port.ID);

    port.BodyControls.Add(LitMyTaskAgain);//add dotnet standard control

    Anchor anchor
    = new Anchor();
    anchor.Horizontal
    = "100%";
    anchor.Items.Add(port);
    AnchorLayout1.Anchors.Add(anchor);

    PortalColumn1.DoLayout();
    Portal1.DoLayout();

    注意:

    PortalColumn1.DoLayout();
    Portal1.DoLayout();

    这两句一定要加上,否则不会更新添加的 portlet.

    如有更好的办法,还请高手教我。。。

      

  • 相关阅读:
    Unity3D Resources TextAsset 正文
    使用位操作
    Chapter 3 Protecting the Data(3):创建和使用数据库角色
    找呀志_ContentResolver操作ContentProvider数据
    c#委托实例化和调用语句
    有意练习--Rails RESTful(一)
    对于晚辈:阅读经典“乱搭”形成了自己的“制”
    Eclipse SDK构建J2EE开发环境
    7.oracle学习门户系列七---网络管理和配置
    netback于kthread遇到cpu affinity问题
  • 原文地址:https://www.cnblogs.com/jiejie_peng/p/1733941.html
Copyright © 2011-2022 走看看