做list更新时,只需要遍历那些在时间上比在上一次做数据同步操作的时间晚的那些数据。Timer job

holycjj 2011-09-27 05:13:32
有一个sharepoint list.取名为list1. list1 中目前有数据(items)千条左右, list1 上有个button 是用来做数据同步和更新的, 是把list2 上的数据同步到list1上来的。如果list2 上有新增或修改的数据,通过button 点击就可以把这些在list1上不存在的list2 上的数据添加或者更新到list1 上来。 ---(这部分功能已经实现)

问题1: 每当我在list1上做同步数据的操作(点击button)时,程序都会遍历list1 上所有的items,因为数据量庞大,导致性能和速度不高。 我希望能做一个时间标记。 比如:我做数据同步操作时,只需要遍历那些 在时间上 比在上一次做数据同步操作的时间晚的那些数据,这样一来,在做更新的过程中性能就要好很多。

问题2: 如果要设置一个定时器 (Timer job)实现数据的自动更新呢, 这个要如何去实现呢?


希望各位高手们多多指教,小弟在此感谢!(尽量详细解答,有代码示例更好)
...全文
268 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
hansier 2011-10-13
  • 打赏
  • 举报
回复
有哪位高手可以帮忙写下这个timer job 中的 excute 方法呢,我也碰到了同样的问题,一直没能有效解决!
Justin-Liu 2011-10-10
  • 打赏
  • 举报
回复
timer job我没写过 你google找找研究研究
hansier 2011-10-10
  • 打赏
  • 举报
回复
也等待呢,,
hansier 2011-10-08
  • 打赏
  • 举报
回复
遇到了类似的问题,期待高手们的援助... 在线等呢
holycjj 2011-09-29
  • 打赏
  • 举报
回复
timer job 怎么与我的之前写的那个button 如何联系起来呢? 又要怎么去写 timer job 呢?
holycjj 2011-09-29
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 holycjj 的回复:]
SPQuery Sync = new SPQuery();
Sync.Query="<Where><Gt><FieldRef Name = 'Modified'/>
<Value Type='DateTime'><Today Offset = '-1'/></Value></Gt></Where>";
这是我写的查询语句,通过 ‘modified’ 字段来获取数据创建时间。 红色字体……
[/Quote]
大侠们请帮帮忙!
holycjj 2011-09-29
  • 打赏
  • 举报
回复
thaks in advance !
holycjj 2011-09-29
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 q3692547 的回复:]
引用 10 楼 holycjj 的回复:
引用 9 楼 q3692547 的回复:
刚才我又看了下你的描述 应该和你说的意思差不多 因为不清楚你list1中的记录是否有别的来源 所以有点区别

list1 中本身也存在一些数据,在lsit1上通过button 做同步,就是把list2上那些与list1上本身存在的数据不同的数据添加到list1上来, (这个虽已实现)。 我的问题是:
 比……
[/Quote]

你好
我这个 Timer job 怎么写呢? 我在下面的链接里看过timer job 的创建,发现这个里面完全是重新新建的一个timer job, 这样与我的button 所在的那个web part 那又怎么联系呢
http://dotnetfinder.wordpress.com/2010/07/24/creatingcustomsharepointtimerjob2010/
timer job 的创建要涉及到 在 Feature 里面的建 EventRececeiver 和 新建一个class 吧?
现在很是有点紧急呢,期待你们的帮助!!
holycjj 2011-09-29
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 foxdave 的回复:]
点击按钮的时候,按修改时间把最新修改的item查询出来更新就可以了
[/Quote]
SPQuery Sync = new SPQuery();
Sync.Query="<Where><Gt><FieldRef Name = 'Modified'/>
<Value Type='DateTime'><Today Offset = '-1'/></Value></Gt></Where>";
1. 这是写的查询语句,通过 ‘modified’ 字段来获取数据创建时间。 红色字体的是临时写的,看有没有可能帮我把时间改成 每个周五 做更新呢?不必天天更新。
2. Timer job 怎么写呢? 我在下面的链接里看过timer job 的创建,发现这个里面完全是重新新建的一个timer job, 这样与我的button 所在的那个web part 那又怎么联系呢
http://dotnetfinder.wordpress.com/2010/07/24/creatingcustomsharepointtimerjob2010/
Justin-Liu 2011-09-29
  • 打赏
  • 举报
回复
点击按钮的时候,按修改时间把最新修改的item查询出来更新就可以了
战灬龙 2011-09-28
  • 打赏
  • 举报
回复
刚才我又看了下你的描述 应该和你说的意思差不多 因为不清楚你list1中的记录是否有别的来源 所以有点区别
战灬龙 2011-09-28
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 holycjj 的回复:]
hi, 5楼朋友:我看了你这个思路: “还有另外一个思路就是通过时间还进行判断 在查询list2中Item 的创建时间 通过caml 查询 就能够得到哪些是新增的了 功能用在time Job 中最适合了 这种方法的缺点就是一定要把每次更新的时间记的准确 还要有固定位置长期存储 ”

对于上面的思路我的理解是:在list2中通过查询,那些在创建时间上大于 在list1上 上一次做更新的时间,……
[/Quote]

不是这样的 那个时间是记录list2每次同步到list1中的时间 比如:list2在2011年1月1日同步了一次 那么那个时间就是2011年1月1日 下次在同步的时候就是从2011年1月2日开始同步 我觉得是这样
每次只记录list2中最后同步的时间
holycjj 2011-09-28
  • 打赏
  • 举报
回复
hi, 5楼朋友:我看了你这个思路: “还有另外一个思路就是通过时间还进行判断 在查询list2中Item 的创建时间 通过caml 查询 就能够得到哪些是新增的了 功能用在time Job 中最适合了 这种方法的缺点就是一定要把每次更新的时间记的准确 还要有固定位置长期存储 ”

对于上面的思路我的理解是:在list2中通过查询,那些在创建时间上大于 在list1上 上一次做更新的时间,便是新增加的items, 然后只需要把这些items 同步到list1上来。 对吗?
珊瑚 2011-09-28
  • 打赏
  • 举报
回复
友情顶!不要沉帖啊!
战灬龙 2011-09-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 holycjj 的回复:]
引用 1 楼 fanyingjie1988 的回复:
我这有一个思路,希望对你有帮助。

其实我的想法也很简单:
1. 在list2中添加一列,名为status。来记载该条记录是不是新政的,如果是,给个值(例如status是Boolean类型的,那么如果是新增的就给赋值1。)
2. 写一个Timejob,来caml出来其中状态为1的所有Item。然后把它们添加到list1种,并且把lis……
[/Quote]

就是写到你的按钮事件里就可以了呀 上面不是说的很清楚了吗

还有另外一个思路就是通过时间还进行判断 在查询list2中Item 的创建时间 通过caml 查询 就能够得到哪些是新增的了 功能用在time Job 中最适合了 这种方法的缺点就是一定要把每次更新的时间记的准确 还要有固定位置长期存储
holycjj 2011-09-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 fanyingjie1988 的回复:]
我这有一个思路,希望对你有帮助。

其实我的想法也很简单:
1. 在list2中添加一列,名为status。来记载该条记录是不是新政的,如果是,给个值(例如status是Boolean类型的,那么如果是新增的就给赋值1。)
2. 写一个Timejob,来caml出来其中状态为1的所有Item。然后把它们添加到list1种,并且把list2
中的已经添加到list1种的所有数据状态修改为0……
[/Quote]
我觉得这个思路很有特点,可是要怎么去具体实现呢,我还不是很会呢。请赐教呢,
holycjj 2011-09-28
  • 打赏
  • 举报
回复
up...
holycjj 2011-09-28
  • 打赏
  • 举报
回复
SPQuery Sync = new SPQuery();
Sync.Query="<Where><Gt><FieldRef Name = 'Modified'/>
<Value Type='DateTime'><Today Offset = '-1'/></Value></Gt></Where>";
这是我写的查询语句,通过 ‘modified’ 字段来获取数据创建时间。 红色字体的是临时写的,看有没有可能帮我把时间改成 每个周五 做更新呢?不必天天更新。

Timer job 我还是不会弄呢,在网上查询看了下,写一个timer job 发现涉及到东西挺多,有没有哪位朋友可以给我在这里写个详细的呢,有相关说明更好,小弟我感激不尽啊,
holycjj 2011-09-28
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 q3692547 的回复:]
引用 10 楼 holycjj 的回复:
引用 9 楼 q3692547 的回复:
刚才我又看了下你的描述 应该和你说的意思差不多 因为不清楚你list1中的记录是否有别的来源 所以有点区别

list1 中本身也存在一些数据,在lsit1上通过button 做同步,就是把list2上那些与list1上本身存在的数据不同的数据添加到list1上来, (这个虽已实现)。 我的问题是:
 比……
[/Quote]
Timer job 这个是写在那个button的事件方法当中,还是要添加一个新项来写呢? 我在网上找了下关于timer job 的创建,看起来建一个timerjob 有很多内容呢,
加载更多回复(5)

3,245

社区成员

发帖
与我相关
我的任务
社区描述
企业开发 SharePoint
社区管理员
  • SharePoint社区
  • 霖雨 - LinyuLoveTJ
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧