首页新闻找找看学习计划

关于SharePoint web part 自定义属性保存值.

0
悬赏园豆:100 [待解决问题]

请问下,在SharePoint web part中,自定义了一个属性,此属性有自己默认值.在页面上加载此web part,打开设置界面,此自定义属性可以出现.然后不作任何修改,点击保存.

请问在此情况下,这个自定义属性是否会被保存到数据库中?

PS:

  如果在页面上修改了这个自定义属性的值,是可以正常保存的,所以不要怀疑是代码的问题,我只是想知道,直接点击保存会不会更新数据库?

雄爷的主页 雄爷 | 初学一级 | 园豆:100
提问于:2012-03-06 16:24
< >
分享
所有回答(2)
0

会.实际上WebPart的自定义属性是被保存到WebPart自己本身上了,因为WebPart被添加到页面,自定义属性已经作为一个 ASP.NET 控件中的一个属性节点被保存到页面中了,页面本身是以二进制的形式存储在数据表中,所以最终还是存储在数据库中了。

kech | 园豆:12 (初学一级) | 2012-03-06 16:37

谢谢你的回复.

或者我说得更具体一点:

我写了一个自定义属性:

string a = "a";

[...这里忽略一些属性]

public str A

{

  get{return a;}

     set{a = value;}

}

我在set这里设了一个断点,按理说web part第一次加载后, 会先跳到我这个断点,先给a付值. 但实际上没有.

 

但如果我是先在web part的配置里,先修改了a的值,然后点击保存, 然后我重新打开页面,这时候这会跳到我这个断点了.

请问这个现象怎么解释啊?是我哪里理解错了吗?是不是说web part在保存属性时,先会判断下,这个属性新的值跟旧的值是否相等,然后才决定更不更新这个属性到数据库?当然这只是我的猜想,我想知道有没有这方面的官方证明?

谢谢.

支持(0) 反对(0) 雄爷 | 园豆:100 (初学一级) | 2012-03-08 13:09

或者再具体点,我先写了一个web part,它里面有个属性:

string a = "a";

[...这里忽略一些属性]

public string A

{

  get{return a;}

     set{a = value;}

}

然后布置到服务器上了,担后来我改了这个属性的默认值:

string a = "b";

[...这里忽略一些属性]

public string A

{

  get{return a;}

     set{a = value;}

}

再一次部署.但我发现这A属性已经变成'b'了,后来我在set这里加了断点,它不能跳到这个断点里.

这时我在页面上打开这个web part的配置,修改了A的值等于c,然后保存.

这时,我再到我的开发环境中,再一次修改A的默认值:

string a = "d";

[...这里忽略一些属性]

public string A

{

  get{return a;}

     set{a = value;}

}

然后再次部署到服务器.

这时,我再打开页面,发现A的值是'c'.断点也可以跳进来,也就是说,A这个属性已经更新到数据库中去了,无论我再怎么在代码中修改a的默认值,都不会影响到已经部署到服务器上的web part的值.所以我才有这样的疑问.如果我哪理理解错了,请指正.谢谢.

支持(0) 反对(0) 雄爷 | 园豆:100 (初学一级) | 2012-03-08 13:19
0

Sharepoint 机制就是这样。每次点编辑,保存 都会触发webpart的pageLoad事件。

凉风ing | 园豆:332 (菜鸟二级) | 2012-03-14 17:15
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册