Event Handler 2007中的问题。 [英] Problem in Event Handler 2007.

查看:58
本文介绍了Event Handler 2007中的问题。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好,


场景: - 在创建的资源上,我想在名为"projectManager"的查找表中输入资源名称


incase资源属于projectmanager组...


请检查代码并建议我


 


< pre lang ="xc#">使用System;
使用System.Collections.Generic;
使用System.Linq;
使用System.Text;
使用PSLibrary = Microsoft.Office.Project.Server.Library;
使用Microsoft.Office.Project.Server.Events;
使用wss = Microsoft.SharePoint;


namespace ClassLibrary1
{
public class Resource:ResourceEventReceiver
{
public static Resourcewe.Resource r = new ClassLibrary1.Resourcewe.Resource ();
public static LookUpTable1.LookupTable l = new ClassLibrary1.LookUpTable1.LookupTable();
Guid [] lookupguid;
public override void OnCreated(Microsoft.Office.Project.Server.Library.PSContextInfo contextInfo,ResourceCreatePostEventArgs e)
{
base.OnCreated(contextInfo,e);
string resourcename = e.CreatedResources.ToString();
string ru = e.CreatedResources.GetValue(0).ToString();
Guid siteguid = contextInfo.SiteGuid;
string pwaurl = new wss.SPSite(siteguid).Url;
// int eventId = 7777;


LookUpTable1.LookupTableMultiLangDataSet lds = new ClassLibrary1.LookUpTable1.LookupTableMultiLangDataSet();
// LookUpTable1.LookupTableDataSet.LookupTableTreesRow lrow = lds.LookupTableTrees.NewLookupTableTreesRow();
LookUpTable1.LookupTableMultiLangDataSet.LookupTablesRow lrow = lds.LookupTables.NewLookupTablesRow();


PSLibrary.Filter lookupfilter = new Microsoft.Office.Project.Server.Library.Filter();
lookupfilter.FilterTableName = lds.LookupTables.TableName;
//lookupfilter.Fields.Add(new PSLibrary.Filter.Field(lds.LookupTables.TableName,lds.LookupTables.LT_NAMEColumn.ColumnName,PSLibrary.Filter.SortOrderTypeEnum.None));
//lookupfilter.Fields.Add(new PSLibrary.Filter.Field(lds.LookupTables.TableName,lds.LookupTables.LT_UIDColumn.ColumnName,PSLibrary.Filter.SortOrderTypeEnum.None));

PSLibrary.Filter.FieldOperator existinglookup = new Microsoft.Office.Project.Server.Library.Filter.FieldOperator(PSLibrary.Filter.FieldOperationType.Equal,lds.LookupTables.LT_NAMEColumn.ColumnName," projectManager" );
lookupfilter.Criteria = existinglookup;

string lookupxml = lookupfilter.GetXml();
lds = l.ReadLookupTablesMultiLang(lookupxml,false);


Resourcewe.ResourceDataSet resourceDs = new ClassLibrary1.Resourcewe.ResourceDataSet();
PSLibrary.Filter resourceFilter = new Microsoft.Office.Project.Server.Library.Filter();
resourceFilter.FilterTableName = resourceDs.Resources.TableName;
//resourceFilter.Fields.Add(new PSLibrary.Filter.Field(resourceDs.Resources.TableName,resourceDs.Resources.RES_UIDColumn.ColumnName,PSLibrary.Filter.SortOrderTypeEnum.None));
//resourceFilter.Fields.Add(new PSLibrary.Filter.Field(resourceDs.Resources.TableName,resourceDs.Resources.RES_GROUPColumn.ColumnName,PSLibrary.Filter.SortOrderTypeEnum.None));

PSLibrary.Filter.FieldOperator existingResource = new Microsoft.Office.Project.Server.Library.Filter.FieldOperator(PSLibrary.Filter.FieldOperationType.Equal,resourceDs.Resources.RES_NAMEColumn.ColumnName,resourcename);
resourceFilter.Criteria = existingResource;

String filterXml = resourceFilter.GetXml();
resourceDs = r.ReadResources(filterXml,false);

String groupname = resourceDs.Resources [0] .RES_GROUP;
lookupguid [0] = lds.LookupTables [0] .LT_UID;

if(groupname ==" Project Managers")
{
LookUpTable1.LookupTableMultiLangDataSet.LookupTableStructuresRow lutStructureRow =
lds.LookupTableStructures.NewLookupTableStructuresRow();
lutStructureRow.LT_UID = lookupguid [0];
lutStructureRow.LT_STRUCT_UID = Guid.NewGuid();
lds.LookupTableStructures.Rows.Add(lutStructureRow);

LookUpTable1.LookupTableMultiLangDataSet.LookupTableValuesRow lutValueRow =
lds.LookupTableValues.NewLookupTableValuesRow();
lutValueRow.LCID = 1033;
lutValueRow.LT_VALUE_DESC ="这是根标签A" ;;
lutValueRow.LT_VALUE_DUR = 30;
lutValueRow.LT_VALUE_DUR_FMT =(byte)PSLibrary.Task.DurationFormat.Hour;
lutValueRow.LT_STRUCT_UID = lutStructureRow.LT_STRUCT_UID;
lutValueRow.LT_UID = lutStructureRow.LT_UID;
lds.LookupTableValues.Rows.Add(lutValueRow);
bool validateOnly = false;
bool autoCheckIn = true;


l.UpdateLookupTablesMultiLang(lds,validateOnly,autoCheckIn);

//lrow.LT_UID = new Guid();
//lrow.LT_STRUCT_UID = new Guid();
//lrow.SetLT_PARENT_STRUCT_UIDNull();
//lrow.LT_VALUE_TEXT = resourcename;
//lrow.LT_VALUE_SORT_INDEX =(byte)PSLibrary.LookupTables.SortOrder.Ascending;
}




}
}
}

 

解决方案

Hey Nitin,


问题是什么?你有没有注册这个活动&验证代码无效..或抛出异常? 


 


Hi all,

Scenario:- On recource created i want enter resouce name in a look up table called "projectManager"

incase resource belongs to projectmanager group...

Please check code and suggest me

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using PSLibrary=Microsoft.Office.Project.Server.Library;
using Microsoft.Office.Project.Server.Events;
using wss=Microsoft.SharePoint;


namespace ClassLibrary1
{
  public class Resource : ResourceEventReceiver
  {
    public static Resourcewe.Resource r = new ClassLibrary1.Resourcewe.Resource();
    public static LookUpTable1.LookupTable l = new ClassLibrary1.LookUpTable1.LookupTable();
    Guid[] lookupguid;
    public override void OnCreated(Microsoft.Office.Project.Server.Library.PSContextInfo contextInfo, ResourceCreatePostEventArgs e)
    {
      base.OnCreated(contextInfo, e);
      string resourcename = e.CreatedResources.ToString();
      string ru = e.CreatedResources.GetValue(0).ToString();
      Guid siteguid = contextInfo.SiteGuid;
      string pwaurl = new wss.SPSite(siteguid).Url;
      //int eventId = 7777;


      LookUpTable1.LookupTableMultiLangDataSet lds = new ClassLibrary1.LookUpTable1.LookupTableMultiLangDataSet();
      // LookUpTable1.LookupTableDataSet.LookupTableTreesRow lrow = lds.LookupTableTrees.NewLookupTableTreesRow();
      LookUpTable1.LookupTableMultiLangDataSet.LookupTablesRow lrow=lds.LookupTables.NewLookupTablesRow();


      PSLibrary.Filter lookupfilter = new Microsoft.Office.Project.Server.Library.Filter();
      lookupfilter.FilterTableName = lds.LookupTables.TableName;
      //lookupfilter.Fields.Add(new PSLibrary.Filter.Field(lds.LookupTables.TableName, lds.LookupTables.LT_NAMEColumn.ColumnName, PSLibrary.Filter.SortOrderTypeEnum.None));
      //lookupfilter.Fields.Add(new PSLibrary.Filter.Field(lds.LookupTables.TableName, lds.LookupTables.LT_UIDColumn.ColumnName, PSLibrary.Filter.SortOrderTypeEnum.None));

      PSLibrary.Filter.FieldOperator existinglookup = new Microsoft.Office.Project.Server.Library.Filter.FieldOperator(PSLibrary.Filter.FieldOperationType.Equal, lds.LookupTables.LT_NAMEColumn.ColumnName, "projectManager");
      lookupfilter.Criteria = existinglookup;

      string lookupxml = lookupfilter.GetXml();
      lds = l.ReadLookupTablesMultiLang(lookupxml, false);


      Resourcewe.ResourceDataSet resourceDs=new ClassLibrary1.Resourcewe.ResourceDataSet();
      PSLibrary.Filter resourceFilter = new Microsoft.Office.Project.Server.Library.Filter();
      resourceFilter.FilterTableName = resourceDs.Resources.TableName;
      //resourceFilter.Fields.Add(new PSLibrary.Filter.Field(resourceDs.Resources.TableName, resourceDs.Resources.RES_UIDColumn.ColumnName, PSLibrary.Filter.SortOrderTypeEnum.None));
      //resourceFilter.Fields.Add(new PSLibrary.Filter.Field(resourceDs.Resources.TableName, resourceDs.Resources.RES_GROUPColumn.ColumnName, PSLibrary.Filter.SortOrderTypeEnum.None));

      PSLibrary.Filter.FieldOperator existingResource = new Microsoft.Office.Project.Server.Library.Filter.FieldOperator(PSLibrary.Filter.FieldOperationType.Equal, resourceDs.Resources.RES_NAMEColumn.ColumnName, resourcename);
      resourceFilter.Criteria = existingResource;

      String filterXml = resourceFilter.GetXml();
      resourceDs = r.ReadResources(filterXml, false);

      String groupname = resourceDs.Resources[0].RES_GROUP;
      lookupguid[0] = lds.LookupTables[0].LT_UID;

      if (groupname == "Project Managers")
      {
        LookUpTable1.LookupTableMultiLangDataSet.LookupTableStructuresRow lutStructureRow =
          lds.LookupTableStructures.NewLookupTableStructuresRow();
        lutStructureRow.LT_UID = lookupguid[0];
        lutStructureRow.LT_STRUCT_UID = Guid.NewGuid();
        lds.LookupTableStructures.Rows.Add(lutStructureRow);

        LookUpTable1.LookupTableMultiLangDataSet.LookupTableValuesRow lutValueRow =
          lds.LookupTableValues.NewLookupTableValuesRow();
        lutValueRow.LCID = 1033;
        lutValueRow.LT_VALUE_DESC = "This is root label A";
        lutValueRow.LT_VALUE_DUR = 30;
        lutValueRow.LT_VALUE_DUR_FMT = (byte)PSLibrary.Task.DurationFormat.Hour;
        lutValueRow.LT_STRUCT_UID = lutStructureRow.LT_STRUCT_UID;
        lutValueRow.LT_UID = lutStructureRow.LT_UID;
        lds.LookupTableValues.Rows.Add(lutValueRow);
        bool validateOnly = false;
        bool autoCheckIn = true;


        l.UpdateLookupTablesMultiLang(lds, validateOnly, autoCheckIn);
        
        //lrow.LT_UID = new Guid();
        //lrow.LT_STRUCT_UID = new Guid();
        //lrow.SetLT_PARENT_STRUCT_UIDNull();
        //lrow.LT_VALUE_TEXT = resourcename;
        //lrow.LT_VALUE_SORT_INDEX = (byte)PSLibrary.LookupTables.SortOrder.Ascending;
      }
      
      
      
      
    }
  }
}

 

解决方案

Hey Nitin,

What is the issue? Did you register the event & verified that code is not working ..or throwing exceptions? 

 


这篇关于Event Handler 2007中的问题。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆