1)前台Default.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="LookupDemo._Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<span>姓名</span><asp:TextBox ID="txtName" runat="server"></asp:TextBox><br />
<span>爱好</span><asp:ListBox ID="lstHobby" runat="server" SelectionMode="Multiple"></asp:ListBox><br />
<asp:Button ID="btnAdd" runat="server" Text="添加" οnclick="btnAdd_Click" />
<table>
<asp:Repeater ID="rptStudent" runat="server">
<HeaderTemplate>
<tr>
<td>姓名</td>
<td>爱好</td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td><%#Eval("Name") %></td>
<td><%#Eval("Hobby") %></td>
</tr>
</ItemTemplate>
</asp:Repeater>
</table>
</div>
</form>
</body>
</html>
2)后台
1.Default.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Microsoft.SharePoint;
using System.Data;
namespace LookupDemo
{
public partial class _Default : System.Web.UI.Page
{
private string webUrl = "http://dg-caozhenhua:88/";
private string studentListName = "student";
private string hobbyListName = "hobby";
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindHobby();
BindStudent();
}
}
protected void btnAdd_Click(object sender, EventArgs e)
{
string name = txtName.Text;
List<Hobby> hobbies = GetSelectedHobby();
if (AddStudent(name, hobbies))
{
Page.ClientScript.RegisterStartupScript(GetType(), "add_success", "alert('add success!');", true);
}
else
{
Page.ClientScript.RegisterStartupScript(GetType(), "add_failure", "alert('add failure!');", true);
}
BindStudent();
}
/// <summary>
/// 获取选中的爱好(hobby)
/// </summary>
/// <returns></returns>
private List<Hobby> GetSelectedHobby()
{
List<Hobby> hobbies = new List<Hobby>();
for (int i = 0; i < lstHobby.Items.Count; i++)
{
if (lstHobby.Items[i].Selected)
{
Hobby hobby = new Hobby();
hobby.Id = Convert.ToInt32(lstHobby.Items[i].Value);
hobby.Hob = lstHobby.Items[i].Text;
hobbies.Add(hobby);
}
}
return hobbies;
}
/// <summary>
/// 将学生信息绑定到rptStudent(repeater)
/// </summary>
private void BindStudent()
{
rptStudent.DataSource = GetAllStudent();
rptStudent.DataBind();
}
/// <summary>
/// 添加学生信息
/// </summary>
/// <returns></returns>
private bool AddStudent(string name,List<Hobby> hobbies)
{
bool flag = false;
SPSecurity.RunWithElevatedPrivileges(
delegate() {
using (SPWeb web = new SPSite(webUrl).OpenWeb())
{
web.AllowUnsafeUpdates = true;
SPList list = web.Lists["student"];
SPListItem item = list.Items.Add();
item["Title"] = name;
SPFieldLookupValueCollection lookupItems = new SPFieldLookupValueCollection();
foreach (Hobby hobby in hobbies)
{
SPFieldLookupValue lookupItem = new SPFieldLookupValue(hobby.Id,hobby.Hob);
lookupItems.Add(lookupItem);
}
item["hobby"] = lookupItems;
try
{
item.Update();
flag = true;
}
catch (Exception ex)
{ flag = false; }
}
});
return flag;
}
/// <summary>
/// 获取所有的学生信息(将查阅项中的信息筛选)
/// </summary>
/// <returns></returns>
private List<Student> GetAllStudent()
{
List<Student> students=new List<Student>();
SPSecurity.RunWithElevatedPrivileges(
delegate() {
using (SPWeb web = new SPSite(webUrl).OpenWeb())
{
SPList list = web.Lists[studentListName];
SPQuery query = new SPQuery();
query.ViewFields = "<FieldRef Name='Title'/><FieldRef Name='hobby'/>";
SPListItemCollection items = list.GetItems(query);
foreach (SPListItem item in items)
{
Student student = new Student();
student.Name = item.Title;
SPFieldLookupValueCollection lookupItems = new SPFieldLookupValueCollection(item["hobby"].ToString());
foreach (SPFieldLookupValue lookupItem in lookupItems)
{
student.Hobby += lookupItem.LookupValue + ";";
}
students.Add(student);
}
}
});
return students;
}
/// <summary>
/// 获取所有的爱好绑定到lstHobby(listview)
/// </summary>
private void BindHobby()
{
SPSecurity.RunWithElevatedPrivileges(
delegate() {
using (SPWeb web = new SPSite(webUrl).OpenWeb())
{
SPList list = web.Lists[hobbyListName];
SPListItemCollection items = list.Items;
foreach (SPListItem item in items)
{
ListItem lstItem = new ListItem(item.Title.ToString(),item.ID.ToString());
lstHobby.Items.Add(lstItem);
}
}
});
}
}
}
2.Student.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace LookupDemo
{
public class Student
{
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
private string hobby;
public string Hobby
{
get { return hobby; }
set { hobby = value; }
}
}
}
3.Hobby.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace LookupDemo
{
public class Hobby
{
private int id;
public int Id
{
get { return id; }
set { id = value; }
}
private string hob;
public string Hob
{
get { return hob; }
set { hob = value; }
}
}
}