From: https://sharepoint.stackexchange.com/questions/194197/how-to-manipulate-likeby-nooflikes-ratedby-averagerating-userrating-using-cs

Copy below:

 

Gone through the problem an got the relevant answer also made blog on it so visit the blog post

Some of the important aspects covered are described breifly as follows.

To rate an Item for the first time by a user the following fields should be modified with the respective field values:

  1. item["RatingCount"]:

    This field stores the number of users who have rated the item its value should be incremented.

  2. item["Ratings"]:

    A field which stores the user ratings in CSV string format should add the new users rating like.

    int
    NewRating = 4; //any desired number from 1 to 5.

    item["Ratings"] += NewRating + ",";

  3. item["AverageRating"]:

    This field stores the average of the ratings given by all the rated users. Simple weighted average calculation formulas can be implemented which is

    float
    OldAverage = item["AverageRating"] == null ? 0 : float.Parse(item["AverageRating"].ToString());

    int
    OldNumberOfRatings = item["RatingCount"] == null ? 0 : int.Parse(item["RatingCount"].ToString());

    int
    NewNumberOfRatings = OldNumberOfRatings + 1;

     

    float
    NewAverage = OldAverage + ( ( NewRating - OldAverage ) / NewNumberOfRatings);

    //Or.

    float
    NewAverage = ( ( OldAverage * OldNumberOfRatings ) + NewRating ) / NewNumberOfRatings;

     

    item["AverageRating"] = NewAverage;

  4. item["RatedBy"]:

    This field stores the user information in form of array of FieldUserValue which can be modified using following code

    FieldUserValue[] ratedUsers = item["RatedBy"] as
    FieldUserValue[];

    //where ratedUsers becomes an array of users who have already rated.

    List<FieldUserValue> newUsersRated = new
    List<FieldUserValue>();

    if (ratedUsers != null)

    foreach (FieldUserValue ratedUser in ratedUsers)

    newUsersRated.Add(ratedUser);

    newUsersRated.Add(FieldUserValue.FromUser(user.LoginName));

    item["RatedBy"] = newUsersRated;

To Rerate the item for a user who has already rated it before you need to first find the user index (say int userIndex) in the item["RatedBy"] field then change the following fields:

  1. item["Ratings"]:

    Change the user rating in this CSV string by use of userIndex.

    FieldUserValue[] ratedUsers = item["RatedBy"] as
    FieldUserValue[];

    for (int i = 0; i < ratedUsers.Length; i++)

    if (ratedUsers[i].LookupValue == user.Title)

    int userIndex = i;

    string[] userRatings = item["Ratings"].split(',');

    int
    OldRating = int.Parse(userRatings[userIndex]);

    int
    NewRating = 3; //any desired number from 1 to 5.

    userRatings[userIndex] = NewRating.ToString();

    string ratings = userRatings.Join(',', userRatings);

    item["Ratings"] = ratings;

  2. item["AverageRating"]:

    change the average value using formula

    float
    OldAverage = item["AverageRating"];

    int
    NumberOfRatings = item["RatingCount"];

    float
    NewAverage = OldAverage + ( ( NewRating - OldRating ) / NumberOfRatings );

    item["AverageRating"] = NewAverage;

SharePoint中Rating相关的字段。的更多相关文章

  1. sharepoint中的YesNo字段

    sharepoint中的YesNo字段实际上是一个Boolean字段,性格有点特别,如果IsShow是一个YesNo字段,使用caml查询的时候值为”1“(Yes)”0“(No),Item[IsSho ...

  2. Oracle中的自连接(self join)-当表中的某一个字段与这个表中另外字段的相关时,我们可能用到自连接。

    http://blog.163.com/wkyuyang_001/blog/static/10802122820091751049479/ 当表中的某一个字段与这个表中另外字段的相关时,我们可能用到自 ...

  3. 6月20日 Django中ORM介绍和字段、字段参数、相关操作

    一.Django中ORM介绍和字段及字段参数 二.Django ORM 常用字段和参数 三.Django ORM执行原生SQL.在Python脚本中调用Django环境.Django终端打印SQL语句 ...

  4. Sharepoint 2013列表视图和字段权限扩展插件(免费下载)!

    记得2014年春节期间,有博客园的网友通过QQ向我咨询Sharepoint 2013列表视图和字段权限扩展,因为之前他看到我博客介绍Sharepoint 2010列表视图和字段的权限控制扩展使用,问有 ...

  5. Sharepoint中有关文件夹的操作

    1.GetItemsWithUniquePermissions根据返回数量和是否返回文件夹获取唯一权限的列表项集合 对于SharePoint对象模型中SPList的GetItemsWithUnique ...

  6. SharePoint中使用Visio Service展示业务数据

    SharePoint中可以通过Visio Service可以在浏览器中查看Visio图,功能部署到系统中,一切安好. 而现实总是很折磨人,使用该功能后,相关使用者随后提出,Visio图能否与我的业务数 ...

  7. SharePoint中新创建的Web Application在浏览器中报404错误

    问题描述:在安装完成SharePoint 2010后,进入Central Administration,创建一个新的Web Application,可以正常创建,但访问时却返回404. 平台环境:Wi ...

  8. 理解CSV文件以及ABAP中的相关操作

    在很多ABAP开发中,我们使用CSV文件,有时候,关于CSV文件本身的一些问题使人迷惑.它仅仅是一种被逗号分割的文本文档吗? 让我们先来看看接下来可能要处理的几个相关组件的词汇的语义. Separat ...

  9. 在SharePoint中创建可自定义属性的文件夹

    概况 阅读时间:约5分钟 适用版本:SharePoint Server 2010及以上 面向用户:普通用户.管理员.开发人员 难度指数:★★★☆☆ SharePoint中的文件夹分为2种,一种是文档库 ...

随机推荐

  1. 向OSG视图Viewer发送消息

    句柄是以下面的方式传递给osgViewer::Viewer的,osgViewer::View.getCamera().setGraphicsContext(osg::GraphicsContext); ...

  2. delphi dxRibbon中 F10快捷键不好用的原因

    最近在项目中使用ribbon  ,用F10做快捷键,但是不好用, 不好用的原因是dxBarManager1 中的有个选项UseF10ForMenu, 把这项关闭就可以了

  3. idhttpserver的使用方法

    idhttpserver的使用方法 1)CommandGet(AContext: TIdContext; ARequestInfo: TIdHTTPRequestInfo; AResponseInfo ...

  4. C#+AE 判断点是否在面内的方法

    整体思路:射线法. ①:先判断点的X和Y坐标和多边形的Xmin,Xmax,Ymin,Ymax的关系.若超出了这四个值,则一定在多边形外: ②:若不符合上述条件,则继续.向左做线段,线段的左顶点的X坐标 ...

  5. SurfaceFlinger( 226): Permission Denial: can't access SurfaceFlinger

    MODIFY_PHONE_STATE permission is granted to system apps only. For your information, there are 2 type ...

  6. ExtJS学习-----------Ext.Array,ExtJS对javascript中的Array的扩展(实例)

    (1)clean var arr = [1,2,null,3,'']; alert(Ext.Array.clean(arr)); //clean的对象:(value === null) || (val ...

  7. SharePoint 表单认证创建用户

    前言 本文介绍如何在SharePoint表单登陆中添加表单用户,前提是已经配置了表单认证,如果没配置表单登陆,需要先配置表单登陆: 1. 打开Visual Studio,如下图: 2. 新建一个项目 ...

  8. UITextField的简易封装

    UITextField的简易封装 效果 源码 https://github.com/YouXianMing/UI-Component-Collection 中的 UITextFieldView // ...

  9. Js与正则表达式

    原本接着上面的章节,这一章节应该是写 Jquery事件的,由工作需要,暂时横插一篇正则表达式的学习,这里是边学边记录,错误之处,希望指正,提拔一二,不甚感激! 此章节有 1.1 正则表达式的定义 1. ...

  10. 关于chrome插件编写的小结

    一个插件的大致目录结构如下: 其中manifest文件最为重要,它定义/指明插件应用的相关信息(权限.版本.功能说明等),点此查看Manifest的详情>>   这里有一篇chrome官方 ...