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.

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

  

原文地址:https://www.cnblogs.com/jiejie_peng/p/1733941.html