Reputation: 11
I have created event receiver with C# coding in SharePoint.when item should match is already have. it showing massage like this is my code..
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>");
}
output:-
item is already exists. that item adding only one time in a day.again i cant add another item. But i want add another item in a day change time
any one can help me out.
Upvotes: 1
Views: 6814
Reputation: 1
Not sure that you can register script because the page will be redirected.
But you can use properties.Status = SPEventReceiverStatus.CancelWithRedirectUrl
and add custom parameter to query string. Also script must be always on the page.
So you just check necessary parameter in QS and show alert if it is present.
Upvotes: 0
Reputation: 11
As I can see, you have problem with the query string, you should use this:
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>";
and you should have strStartdate with format like this '1971-01-01T00:00:00Z'
you can use this method:
SPUtility.CreateISO8601DateTimeFromSystemDateTime(properties.AfterProperties["EventDate"])
Hope this helps!
Upvotes: 1