Moss调查问卷--仅供参考

  Moss中做过调查问卷统计多选的人都知道,再查看答案的时候 总是有不方便的时候,比如组织去旅游,选择地点,一个人可以选择多个,但是最后只能去一个地方,那就要看最后哪个选择的人多,调查自带的统计就办不到了,根据这个需求,我做了一个小页面,大家希望扩展也可以做成部件,代码如下:

 

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using Microsoft.SharePoint;
using System.Collections.Generic;

namespace SearchResoprt
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
             //获取到列表名称
            string ListName= Request.QueryString["list"];
           // string ListName = "";
            //找到对应网站,并取出列表数据
             SPSite site = SPContext.Current.Site;
             SPWeb web = SPContext.Current.Web; 
             SPList list = web.Lists[ListName];
             SPListItemCollection ListItemC = list.Items;
             int itemCount = list.ItemCount;//答题总数
             SPFieldCollection fieldC = ListItemC[0].Fields;//取出栏目
             string[] fieldAnswer = new string[fieldC.Count]; //每题每个人的答案集合
             int count = 1; //题目数累加                  

             //第一题 A,B
             // Dictionary<string, ArrayList<string, int>> dic = new Dictionary<string, ArrayList<string, int>>();
             Dictionary<string, int> dic = null;
             //查询调查列表答案
             foreach (SPField field in fieldC)
             {
                 dic = new Dictionary<string, int>();

                 if (!field.FromBaseType)
                 {
                     string title = field.Title.ToString().Substring(2);
                     this.lbltitle.Text += title+"<br />";
                     for (int i = 0; i < itemCount; i++)
                     {
                         //有间隔符号的答案,处理字符串
                         string answerL = ListItemC[i][field.InternalName].ToString();
                         //string an = answerL.Replace(';', ' ');
                         //string answer = an.Replace('#', ' ');
                         char[] zf = new char[] { ';', '#', '.' };
                         string[] danswer = answerL.Split(zf);
                         foreach (string daan in danswer)
                         {
                             if (daan.ToString() != "" && daan != null && daan.Length == 1)
                             {
                                 if (dic.ContainsKey(daan))
                                 {
                                     //判断是否已经选择过这个选项,选择过的话给value加一
                                     dic[daan] = count + 1;
                                 }
                                 else
                                 {
                                     dic.Add(daan, count);
                                 }
                             }

                         }
                     }
                     var diclist = dic.OrderBy(f => f.Key);
                     foreach (var item in diclist)
                     {
                         double prc = Convert.ToDouble(item.Value) / Convert.ToDouble(itemCount) * 100;
                         string prcent = prc.ToString().Substring(0, 4);
                         this.lbltitle.Text += item.Key + ":" + prcent + "%"+"<br />";

                     }


                 }

             }
        }
    }
}

页面前台只放了一个Lable控件用于展示答案,我这是用百分比的形式展示的结果:如下

北京一日游选择地点?
A:50%
B:50%
C:25%
D:50%
济南一日游选择地点?
A:50%
B:50%
C:50%
D:50%
上海一日游选择地点?
A:50%
B:50%
C:50%
D:25%

使用方法需要在对应网站里面部署,第一步:给程序加个签名,找到自己程序的路径

第二步:把程序bin下面的dll文件复制到c:\Windows\assembly这个下面

第三步:把对应的应用程序“页面”复制到Layout下面,可以新建个文件夹

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值