1

SharePoint で C# コーディングを使用してイベント レシーバーを作成しました。このようなメッセージを表示するのは私のコードです..

    public override void ItemAdding(SPItemEventProperties properties)
    {
            base.ItemAdding(properties);  
            SPList oList = null;
            string strCarName = string.Empty;
            using (SPWeb web = properties.Web)
            {
                oList = web.Lists["Cars"];
                string dropdwnvalue = web.Lists[properties.ListId].Fields["CarName"].InternalName;
                String lookupFieldStringValue = Convert.ToString(properties.AfterProperties[dropdwnvalue]);
                SPListItem item = oList.Items[Convert.ToInt32(lookupFieldStringValue) - 1];
                strCarName = Convert.ToString(item["LinkTitle"]);
            }
            string strStartdate = Convert.ToString(properties.AfterProperties["EventDate"]);
            SPQuery existingItemsQuery = new SPQuery();
            existingItemsQuery.Query = "<Where><And><Eq><FieldRef Name='EventDate'/><Value Type='DateTime'>" + strStartdate + "</Value></Eq><Eq><FieldRef Name='Car_x0020_Name'/><Value Type='Lookup'>" + strCarName + "</Value></Eq></And></Where>";
            SPListItemCollection existingItems = properties.List.GetItems(existingItemsQuery);


                if (existingItems.Count >= 1)
                {

                    properties.Cancel = true;
                    properties.ErrorMessage = "Item is already exists";
                    properties.Status = SPEventReceiverStatus.CancelWithError;
                    // ClientScript.RegisterStartupScript(typeof(Page), "test", "<script>alert('Hello');return false;</script>"); 
                }

出力:-

アイテムは既に存在します。そのアイテムは 1 日に 1 回だけ追加されます。再び別のアイテムを追加することはできません。でも日替わりでもう一品追加したい

誰でも私を助けることができます。

4

2 に答える 2

1

ご覧のとおり、クエリ文字列に問題があります。これを使用する必要があります。

existingItemsQuery.Query = "<Where><And><Eq><FieldRef Name='EventDate'/><Value Type='DateTime' IncludeTimeValue='TRUE'>" + strStartdate + "</Value></Eq><Eq><FieldRef Name='Car_x0020_Name'/><Value Type='Lookup'>" + strCarName + "</Value></Eq></And></Where>";

そして、この「1971-01-01T00:00:00Z」のような形式の strStartdate が必要です

この方法を使用できます:

SPUtility.CreateISO8601DateTimeFromSystemDateTime(properties.AfterProperties["EventDate"])

お役に立てれば!

于 2012-09-19T03:06:56.910 に答える
0

ページがリダイレクトされるため、スクリプトを登録できるかどうかわかりません。ただしproperties.Status = SPEventReceiverStatus.CancelWithRedirectUrl、カスタム パラメータを使用してクエリ文字列に追加することはできます。また、スクリプトは常にページ上にある必要があります。したがって、QS で必要なパラメータを確認し、存在する場合はアラートを表示するだけです。

于 2012-08-17T11:20:00.867 に答える