设置列表字段为主键

转贴:Sample event handler to set a field as a pr imary key (enforce no duplicates)

Got this as a request from a reader- how to prevent users from adding items with same titles as ones that already exist in the list.


  
Code
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.SharePoint;
namespace SPSTIPS.SharePoint.EventHandlers
{
    
public class TitlePrimaryEventHandler:SPItemEventReceiver
    
{
        
const string TITLE_QUERY = @"<Query><Where><Eq><FieldRef Name=""Title"" /><Value Type=""Text"">{0}</Value></Eq></Where></Query>";
        
public override void ItemAdding(SPItemEventProperties properties)
        
{
            
if (properties.AfterProperties["Title"!= null)
            
{
                
//get the title of the new item
                string currentTitle = properties.AfterProperties["Title"].ToString();
                
//get the web site object
                using (SPWeb web = properties.OpenWeb())
                
{
                     
//get the current list
                    SPList list = web.Lists[properties.ListId];
                    
//query the list to check if there are items with the same title
                    SPQuery q = new SPQuery();
                    q.Query 
= string.Format(TITLE_QUERY, currentTitle);
                    SPListItemCollection itemsWithSameTitle 
= list.GetItems(q);
                    
//if there are items, cancel the add, and show an error to the user.
                    if (itemsWithSameTitle.Count > 0)
                    
{
                        properties.Cancel 
= true;
                        properties.ErrorMessage 
= "There is already an item with the title \"" + currentTitle + "\" in this list\".";
                    }

                }

            }

        }

    }

}



上面的代码中,已经写了使用方法,就是用SPWeb web  =  properties.OpenWeb()

转载于:https://www.cnblogs.com/LifelongLearning/archive/2008/03/23/1118504.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值