我和.net

主要讲述Sharepoint以及OfficeSystem和在.net下的开发和应用

导航

使用Sharepoint web应用程序用户满意度调查程序详解

上篇文章说过,我们使用Sharepoint的web应用程序来实现用户满意度调查,这里再解释一下这个情景:

  1. 服务台的工程师为公司员工提供服务,用户满意度是绩效考核指标之一,利用sharepoint的调查可以直观的统计满意度的百分比,不用开发,因此,我们就用sharepoint自带的调查列表。
  2. 但是,调查中,我们要能够包含以下内容:提供服务的工程师是谁?提供服务的时间?提供服务的内容?满意度?用户的建议和投诉?如果这些都要用户去填的话,一方面是用户不会记得那么多,另一方面,是用户不愿意填那么多,因此,除了满意度和用户意见,其他的我们都应该让系统产生。
  3. 怎么产生呢?因为,我们每个工程师在每次服务结束后多要填报服务记录,上面的那些信息服务记录里都有,因此可以从那里去。但是,用户并没有读取这个服务记录的权限(服务记录也使用sharepoint的自定义列表做的)。
  4. 因此,我们设计一个sharepoint的web程序,从服务记录中读取相关信息,把用户的满意度和意见写回调查问卷中去。
  5. 在工程师填写好服务记录之后,用工作流给用户发一个邮件,邮件中包含一个链接地址,链接到这个web程序,并且传送一个服务记录的ID
  6. 当用户点击这个链接的时候,就会打开这web程序,上面是服务信息,包含服务记录的id,服务工程师的姓名、服务内容、服务时间,下半部分就是让用户填的满意度和意见。

程序如下:

using System;

using System.Data;

using System.Configuration;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

using Microsoft.SharePoint;

using Microsoft.SharePoint.Utilities;

 

public partial class _Default : System.Web.UI.Page

{

public string strEventDescript;

public string eventID;

public string eventEngneerName;

public string eventTitle;

public string evnetTime;

public string strErr;

public string eventExe;

protected void Page_Load(object sender, EventArgs e)

{

//因为普通用户(接受服务的人)没有权限访问信息管理部内部的服务登记系统,因此需要提升权限

SPSecurity.RunWithElevatedPrivileges(delegate()

{

    //打开信息管理部内部的网站

SPSite eventSite = new SPSite("http://itsm.sharepointtest.net/imd");

SPWeb eventWeb = eventSite.AllWebs["/imd"];

    //进入服务记录(事件记录表)的列表库

SPList eventList = eventWeb.Lists["事件记录表"];

    //接收从链接中用?itemID=XXXX传进来的事件ID号

string quryId = Request.QueryString["ItemID"].ToString();

//通过ID获取记录

SPListItem eventItem = eventList.GetItemById(int.Parse(quryId));

try

{

//从记录中获取相关信息,填到页面上

//SPList eventList=eventWeb.Lists["事件记录"];

eventID = eventItem["ID"].ToString();

eventTitle = eventItem["标题"].ToString();

eventEngneerName = eventItem["处理人"].ToString().Replace(";#", "-");

string[] strArr = eventEngneerName.Split('-');

eventEngneerName = "";

//有可能有多名工程师为他提供服务,因此通过一个循环获取所有工程师的名字,这个地方用了一个比较歪的点子,去掉用户名前面的";#[数字]"

int arrCount = strArr.Length;

for (int j = 0; j < arrCount; j++)

{

try

{

int temp = int.Parse(strArr[j]);

 

}

catch (Exception e1)

{

eventEngneerName = eventEngneerName + strArr[j] + ";";

string err1 = e1.Message;

}

}

 

evnetTime = eventItem["事件发生时间"].ToString();

//由于在事件描述这个字段上启用了"追加内容的"功能,也就是说工程师可以在这个多行输入框中追加内容,但是没有办法改变原来的内容,因此,需要读出所有的记录

int n = eventItem.Versions.Count;

for (int i = n - 1; i >= 0; i--)

{

if (eventItem.Versions[i]["事件描述"] != null)

{

strEventDescript = strEventDescript + eventItem.Versions[i]["事件描述"].ToString();

}

if (eventItem.Versions[i]["事件处理过程"] != null)

{

eventExe = eventExe + eventItem.Versions[i]["事件处理过程"].ToString();

}

}

 

 

}

catch (Exception ex)

{

//TextBox2.Text = ex.Message;

strErr = ex.Message;

Response.Write(strErr);

 

}

eventWeb.Close();

eventSite.Close();

});

 

 

}

 

protected void Button1_Click(object sender, EventArgs e)

{//单击按钮,将内容提交到调查中

try

{

 

SPSite dcSite = new SPSite("http://itsm.sharepointtest.net/itservice");

SPWeb dcWeb = dcSite.AllWebs["/itservice"];

SPList dcList = dcWeb.Lists["IT服务台服务质量反馈调查"];

SPListItem dcItem = dcList.Items.Add();

dcItem["相关事件ID"] = eventID;

dcItem["为您提供服务的工程师是:"] = eventEngneerName;

dcItem["服务时间是:"] = evnetTime;

dcItem["本次服务的主要内容是:"] = eventTitle;

if (TextBox1.Text == "")

{

dcItem["您的意见和建议:"] = "无";

}

else

{

dcItem["您的意见和建议:"] = TextBox1.Text;

}

if (RadioButton1.Checked == true)

{

dcItem["对工程师的服务态度您是否满意"] = "非常满意";

}

if (RadioButton2.Checked == true)

{

dcItem["对工程师的服务态度您是否满意"] = "满意";

}

if (RadioButton3.Checked == true)

{

dcItem["对工程师的服务态度您是否满意"] = "不满意";

}

if (RadioButton4.Checked == true)

{

dcItem["对工程师的服务态度您是否满意"] = "非常不满意";

}

dcWeb.AllowUnsafeUpdates = true;

dcItem.Update();

dcWeb.AllowUnsafeUpdates = false;

dcWeb.Close();

dcSite.Close();

Label1.Text = "您的评价已经成功提交到服务器服务器上,再次感谢您的支持!";

Button1.Enabled = false;

RadioButton1.Enabled = false;

RadioButton2.Enabled = false;

RadioButton3.Enabled = false;

RadioButton4.Enabled = false;

TextBox1.Enabled = false;

Label1.Visible = true;

 

// });

}

catch (SPException ex1)

{

Response.Write(ex1.Message);

}

//Response.Write(dcWeb.Title);

}

}

调查库里就会增加一条记录:

 

 

用sharepoint调查库自己的功能就可以统计出满意度:

posted on 2008-07-12 11:32  皮皮  阅读(1504)  评论(2编辑  收藏  举报