Hej! Jag har inte riktigt klurat ut hur man debuggar Sharepoint applikationer, det är bl.a. ett av mina problem. :-) För att debugga sharepoint-applikationer, t.ex. webparts, features, event handlers o.s.v. behöver du körs "Attach to process" och debugga w3wp.exe.Uppdatera fält i WSS 3.0
Jag har en applikation där jag ska räkna fram ett värde på ett dokumentnummer med automatik beroende på högsta värdet som finns sen tidigare vid "ItemAdded". Alltså en enkel dokumentnummer + 1, beroende om dokumentet har "0000" eller "" i fältet vid uppladdningen, har den ett värde som inte är "0000" eller "" så ska man inte göra något då det är ett dokument som har ett nummer sen tidigare.
Efter lite tips härifrån Pellesoft och andra ställen så har jag skapat denna lilla snurra medelst lite cut'n paste och egna funderingar:
(Har en "private const string FIELD_ITEM_DOKNR = "DokNr";" )
//****************************************************************
// SetDokNr
// <summary>
// Sets the DokNr property based on the highest DokNr+1
// </summary>
// <param name="item"></param>
//****************************************************************
private void SetDoknr(SPItemEventProperties properties)
{
try
{
// Prevent triggering of other events
this.DisableEventFiring();
// Plocka ut aktuell Item
SPListItem li = properties.ListItem;
SPList list = properties.ListItem.ParentList;
// Om li.DokNr = 0000 så ska DokNr sättas till högsta existerande DokNr+1
if (li[FIELD_ITEM_DOKNR].ToString() == "0000" || li[FIELD_ITEM_DOKNR].ToString() == "")
{
int intDokNr = 0;
string dokNrQuery = "<Aggregations Value=\"On\"><FieldRef Name=\"" + FIELD_ITEM_DOKNR + " \" Type=\"MAX\" /></Aggregations>";
SPSiteDataQuery q = new SPSiteDataQuery();
q.Query = dokNrQuery;
q.ViewFields = FIELD_ITEM_DOKNR;
q.RowLimit = 1;
DataTable t = SPContext.Current.Web.GetSiteData(q);
DataRow[] drs = t.Select(FIELD_ITEM_DOKNR + " = '*'");
intDokNr = Convert.ToInt32(t.Rows[0][FIELD_ITEM_DOKNR]);
intDokNr = intDokNr + 1;
li[FIELD_ITEM_DOKNR] = intDokNr;
li.SystemUpdate();
}
}
catch (Exception ex)
{
properties.ErrorMessage = ex.Message;
}
finally
{
// Enable triggering of other events
this.EnableEventFiring();
}
} // end SetDokNr()
Jag får den inte att funka riktigt, men jag får heller inga fel eller krascher...
Nån idé?
/JariSv:Uppdatera fält i WSS 3.0
Och sen undrar jag varför detta inlägg blir "rapporterat" hela tiden? Jag har fått 6 iMail om att någon anmält mitt inlägg och det här inlägget är det senaste jag lagt in i forumet.
"Ditt inlägg anses skadligt, inte passar i denna tråd eller inte följer de regler som du vid registreringstillfället godkänt i pellesofts regler & policy.
Detta inlägg kan du inte besvara då det sänts per automatik av servern."
Det är ju min egen kod som jag satt ihop med hjälp av i förslag från detta forum.Sv: Uppdatera fält i WSS 3.0
Mer info här: http://msdn.microsoft.com/en-us/library/ms916837.aspx
Ang. iMail om anmälda inlägg har jag också fått detsamma på massa inlägg jag gjort tidigare.