获取list中被选中的item

xiaya1986 2015-02-15 10:23:14
我的场景是这样的,因为workflow修改后 template id都会改变,所以我想在每次选中list中的一个item时能获取他所关联的workflow。获取workflow的问题我在VS上用C#通过workflow名字的方法来获取,但是一直找不到如何获取selected item的方法。Google一下之后只有通过写前台的JS能够获取:
var context = SP.ClientContext.get_current();
var selectedItems = SP.ListOperation.Selection.getSelectedItems(context);
还有就是listitem 的Fields里面有一个“Select”字段但是不知道怎么用,能写成SPQuery来获取吗?

不知道有没有办法从后台获取,或者有什么方法能把前台JS获取的信息传到后台处理?
我觉得获取list中的选中项应该是很常见的场景吧,为什么会没有相对应的API呢?
...全文
299 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
霖雨 版主 2015-02-25
  • 打赏
  • 举报
回复
引用 12 楼 xiaya1986 的回复:
[quote=引用 10 楼 linyustar 的回复:] 隐藏域就是asp.net里面的一个控件,你可以放个Label也行,然后隐藏,前台把值用脚本写进去,后台用代码读取。。
前台写脚本放进去就是用JS找到那个隐藏控件,然后把值赋进去是吧? 顺便问一下 listitem 有onclick方法吗?谢谢 [/quote] 控件才有方法呢,listitem只是一个对象。。没方法。。
霖雨 版主 2015-02-16
  • 打赏
  • 举报
回复
其实我还是没明白,服务器端怎么就获取不到选择的Item了呢?你既然JS都能拿到ID了,在服务器端的可视化WebPart里加一个隐藏域,然后用js把值写进隐藏域,服务器端控件自然就能拿到隐藏域里的值了。 前后台交互的问题,应该不难吧。。 其实,我还是没看明白你想干什么。。
霖雨 版主 2015-02-16
  • 打赏
  • 举报
回复
引用 7 楼 xiaya1986 的回复:
[quote=引用 5 楼 linyustar 的回复:] 其实我还是没明白,服务器端怎么就获取不到选择的Item了呢?你既然JS都能拿到ID了,在服务器端的可视化WebPart里加一个隐藏域,然后用js把值写进隐藏域,服务器端控件自然就能拿到隐藏域里的值了。 前后台交互的问题,应该不难吧。。 其实,我还是没看明白你想干什么。。
SPListItem的成员里还真的没有“Select”相关的属性和方法,SPList里面也没有什么“GetSelectedItem”之类的方法,所以比较麻烦。 其实我现在遇到的问题就是前后台的交互,因为之前也没有web端的开发经验,所以一下子也无从下手。 你提到的 “隐藏域” 是指哪个啊?Google了一下找不到什么有用的信息。谢谢[/quote] 隐藏域就是asp.net里面的一个控件,你可以放个Label也行,然后隐藏,前台把值用脚本写进去,后台用代码读取。。
计算机器 2015-02-16
  • 打赏
  • 举报
回复
引用 8 楼 xiaya1986 的回复:
[quote=引用 6 楼 shrenk 的回复:] [quote=引用 4 楼 xiaya1986 的回复:] [quote=引用 3 楼 shrenk 的回复:] 没看明白,都已经用js拿到item的id了,为什么说拿不到当前选中的item?
JS能拿到选择的Item 但是没法用JS获取workflow,服务端用C# code能拿到workflow但是拿不到选择的Item。。。。。[/quote] 最简单的办法是在后台把workflow的属性(例如名字,template id等等)提前注册到页面。 前台js拿到的item确实没有workflow的信息,我也奇怪过,但是没有深入研究,推测worklfow是banding到list上的,查list不知道能不能得到这些信息。[/quote] 其实我就是想在页面加载后获取Workflow的信息,你说的提前注册到页面应该怎么操作啊? 你说的没错,的确和List绑定在一起,我也找到过一下JS code,但是都失败了,可能不支持2013吧[/quote] 加一个delegate control,每次页面载入的时候执行后台代码将workflow的信息注册到页面。 之前写过一个小工具你可以看一下:http://blog.csdn.net/shrenk/article/details/18733501
xiaya1986 2015-02-16
  • 打赏
  • 举报
回复
引用 6 楼 shrenk 的回复:
[quote=引用 4 楼 xiaya1986 的回复:] [quote=引用 3 楼 shrenk 的回复:] 没看明白,都已经用js拿到item的id了,为什么说拿不到当前选中的item?
JS能拿到选择的Item 但是没法用JS获取workflow,服务端用C# code能拿到workflow但是拿不到选择的Item。。。。。[/quote] 最简单的办法是在后台把workflow的属性(例如名字,template id等等)提前注册到页面。 前台js拿到的item确实没有workflow的信息,我也奇怪过,但是没有深入研究,推测worklfow是banding到list上的,查list不知道能不能得到这些信息。[/quote] 其实我就是想在页面加载后获取Workflow的信息,你说的提前注册到页面应该怎么操作啊? 你说的没错,的确和List绑定在一起,我也找到过一下JS code,但是都失败了,可能不支持2013吧
xiaya1986 2015-02-16
  • 打赏
  • 举报
回复
引用 5 楼 linyustar 的回复:
其实我还是没明白,服务器端怎么就获取不到选择的Item了呢?你既然JS都能拿到ID了,在服务器端的可视化WebPart里加一个隐藏域,然后用js把值写进隐藏域,服务器端控件自然就能拿到隐藏域里的值了。 前后台交互的问题,应该不难吧。。 其实,我还是没看明白你想干什么。。
SPListItem的成员里还真的没有“Select”相关的属性和方法,SPList里面也没有什么“GetSelectedItem”之类的方法,所以比较麻烦。 其实我现在遇到的问题就是前后台的交互,因为之前也没有web端的开发经验,所以一下子也无从下手。 你提到的 “隐藏域” 是指哪个啊?Google了一下找不到什么有用的信息。谢谢
计算机器 2015-02-16
  • 打赏
  • 举报
回复
引用 4 楼 xiaya1986 的回复:
[quote=引用 3 楼 shrenk 的回复:] 没看明白,都已经用js拿到item的id了,为什么说拿不到当前选中的item?
JS能拿到选择的Item 但是没法用JS获取workflow,服务端用C# code能拿到workflow但是拿不到选择的Item。。。。。[/quote] 最简单的办法是在后台把workflow的属性(例如名字,template id等等)提前注册到页面。 前台js拿到的item确实没有workflow的信息,我也奇怪过,但是没有深入研究,推测worklfow是banding到list上的,查list不知道能不能得到这些信息。
xiaya1986 2015-02-16
  • 打赏
  • 举报
回复
引用 10 楼 linyustar 的回复:
隐藏域就是asp.net里面的一个控件,你可以放个Label也行,然后隐藏,前台把值用脚本写进去,后台用代码读取。。
前台写脚本放进去就是用JS找到那个隐藏控件,然后把值赋进去是吧? 顺便问一下 listitem 有onclick方法吗?谢谢
xiaya1986 2015-02-16
  • 打赏
  • 举报
回复
引用 9 楼 shrenk 的回复:
[quote=引用 8 楼 xiaya1986 的回复:] [quote=引用 6 楼 shrenk 的回复:] [quote=引用 4 楼 xiaya1986 的回复:] [quote=引用 3 楼 shrenk 的回复:] 没看明白,都已经用js拿到item的id了,为什么说拿不到当前选中的item?
JS能拿到选择的Item 但是没法用JS获取workflow,服务端用C# code能拿到workflow但是拿不到选择的Item。。。。。[/quote] 最简单的办法是在后台把workflow的属性(例如名字,template id等等)提前注册到页面。 前台js拿到的item确实没有workflow的信息,我也奇怪过,但是没有深入研究,推测worklfow是banding到list上的,查list不知道能不能得到这些信息。[/quote] 其实我就是想在页面加载后获取Workflow的信息,你说的提前注册到页面应该怎么操作啊? 你说的没错,的确和List绑定在一起,我也找到过一下JS code,但是都失败了,可能不支持2013吧[/quote] 加一个delegate control,每次页面载入的时候执行后台代码将workflow的信息注册到页面。 之前写过一个小工具你可以看一下:http://blog.csdn.net/shrenk/article/details/18733501[/quote] 谢谢,和我的场景很像,我马上试试
xiaya1986 2015-02-15
  • 打赏
  • 举报
回复
引用 3 楼 shrenk 的回复:
没看明白,都已经用js拿到item的id了,为什么说拿不到当前选中的item?
JS能拿到选择的Item 但是没法用JS获取workflow,服务端用C# code能拿到workflow但是拿不到选择的Item。。。。。
计算机器 2015-02-15
  • 打赏
  • 举报
回复
没看明白,都已经用js拿到item的id了,为什么说拿不到当前选中的item?
xiaya1986 2015-02-15
  • 打赏
  • 举报
回复
引用 1 楼 linyustar 的回复:
看了2遍,没看出来到底想要干什么。。 要写ECB菜单?前台获取Item的字段值,有JavaScript API,查一下就行;前台获取工作流Id,你后台不是已经能获取了么,写个一般处理程序,前台Ajax也行;不过我没看出来,到底想要干什么,迷迷瞪瞪的。。
是这样的,我刚接触Sharepoint开发,之前一直是做WPF开发的。我的场景其实是获取每个item所对应的Workfolow的TemplateId,起初想直接插一个WebPart里面用JS来获取,但是失败了;后来在VS里创建一个Visual WebPart里面是C#代码(这个应该算是服务端吧),我通过GetAssociationByName方法得到了workflow对象,新的问题就来了,我竟然拿不到用户当前选择的item。我目前的困惑就是怎么把前端获取的用户所选择的item的属性传给服务端进行处理。 写的有点啰嗦,多多包涵啊
霖雨 版主 2015-02-15
  • 打赏
  • 举报
回复
看了2遍,没看出来到底想要干什么。。 要写ECB菜单?前台获取Item的字段值,有JavaScript API,查一下就行;前台获取工作流Id,你后台不是已经能获取了么,写个一般处理程序,前台Ajax也行;不过我没看出来,到底想要干什么,迷迷瞪瞪的。。

3,242

社区成员

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

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