风中的猪儿

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  11 随笔 :: 0 文章 :: 40 评论 :: 4 引用

2011年1月25日 #

今天早上打开电脑,打开sharepoint 2010管理中心,结果报出一个503错误,不止管理中心,所有站点都报这个错。上网搜了一下,说应用程序池停止的问题。查看一下,果然应用程序池停止了,重新运行,问题依旧。突然想到,早上开机时电脑提示了一下密码过期,要求更改,把帐户设置成密码永不过期,回头再看应用程序池,又停止了,再重启,打开一切正常。
posted @ 2011-01-25 12:37 风中的猪儿 阅读(739) 评论(0) 编辑

2010年12月23日 #

Moss 2010终于发布啦,关于Custom Field,并没有太大的变化,但是如果直接使用2007的Custom Field会发现FLDTypes*.xml中的RenderPattern节点里对List View的显示描述会失效。

这是因为Moss 2010中对Custom Field在List view中的显示新增了一种xslt的解析方式。而且,默认是使用这种方式,所以我们会发现以前的CAML的方式不起作用了。我们需要在fldTypes*.xml中填加<Field Name="CAMLRendering">TRUE</Field>,就能正常工作了。具体一个完整的代码如下

 

代码
<?xml version="1.0" encoding="utf-8" ?>
<FieldTypes>
  
<FieldType>
    
<Field Name="TypeName">RecommendField</Field>
    
<Field Name="ParentType">MultiColumn</Field>
    
<Field Name="TypeDisplayName">Recommend</Field>
    
<Field Name="TypeShortDescription">Recommend List</Field>
    
<Field Name="UserCreatable">TRUE</Field>
    
<Field Name="ShowOnListCreate">TRUE</Field>
    
<Field Name="ShowOnSurveyCreate">TRUE</Field>
    
<Field Name="ShowOnDocumentLibraryCreate">TRUE</Field>
    
<Field Name="ShowOnColumnTemplateCreate">TRUE</Field>
    
<Field Name="CAMLRendering">TRUE</Field>
    
<Field Name="FieldTypeClass">RecommendFieldType.RecommendField, $SharePoint.Project.AssemblyFullName$</Field>
    
<RenderPattern Name="DisplayPattern">
      
<Switch>
        
<Expr>
          
<Column />
        
</Expr>
        
<Default>
          
<Column SubColumnNumber="0" HTMLEncode="TRUE"/>
          
<HTML>
            
<![CDATA[ - ]]><List /></HTML>
          
<Column SubColumnNumber="1" HTMLEncode="TRUE"/>
          
<Column Name="ID"></Column>
        
</Default>
      
</Switch>
    
</RenderPattern>
  
</FieldType>
</FieldTypes>

 

 

 

posted @ 2010-12-23 14:34 风中的猪儿 阅读(87) 评论(0) 编辑

2008年11月26日 #

以往我们读取Infopath表单域值的时候,都是通过一个XPath来获取相关的节点,然后再取值或者设值。大概方法如下

 

Code

我们需要知道表单中一个域的XPATH才能查到相关的值。这样比较麻烦,如果哪天表单的域要是有位置上的变化,就得改这里的代码。

其实在Infopath中,域和组的名称是不允许重复出现的,哪怕是不在同组当中,也不允许出现同样的域名称,也就是说,域和组元素名称在整个表单中是唯一的。我们使用XPathNavigator. SelectDescendants方法便可以通过域名来查找到我们需要的域节点。具体方法如下

 

Code

 

 

我们以后只需提供域名称就可以找到相应节点,而不需要通过XPATH来查询了。只要表单中存在为name的域名称,不管在哪里,我们都可以通过下面的代码找出来

 

Code

 

 

 

posted @ 2008-11-26 10:27 风中的猪儿 阅读(254) 评论(2) 编辑

2008年6月24日 #

最近一直和infopath表单打交道,碰到的问题也比较多,刚刚就碰到一个在程序中修改infopath表单中域的内容时出错的问题,写出来与大家共享一下,我想这个问题,可能玩infopath的话,迟早会碰上的吧。
具体表现就是在代码中对一些值类型的域进行更改的时候,代码报错,出错信息:"Schema validation found non-data type errors."
小弟对xml schema真的不是很了解,所以找了半天,最后总算在infopath team blog上找到标准答案
文章地址:http://blogs.msdn.com/infopath/archive/2006/11/28/the-xsi-nil-attribute.aspx
 

xsi:nil属性

你是否曾经在程序中设置域值时碰到schema valiadation错误?很多时候这个错误的原因是节点定义了“nillable”属性. Nillable属性是一个特殊的属性,它能出现在一个XML schemaxsd:elment.如果一个元素定义了xsi:nil属性,意味着这个元素被定义了,但是没有值,因此它是没有内容的。

然而,如果你试图在程序中给一个定义了nillable属性的节点设置值,你会得到一个错误信息:“Schema validation found non-data type errors.”。你可能会发现nillable属性常被定义在下面几种数据类型上:

  • Whole Number (integer)
  • Decimal (double)
  • Date (date)
  • Time (time)
  • Date and Time (dateTime)

要解决这个问题,你的代码需要先检测nil属性是否被定义了。如果定义了,那需要在给节点设置值之前移除这个属性。下面这段简单的程序使用一个XpathNavigator类,检查节点的node是否有nil属性。如果存在则删除掉。

public void DeleteNil(XPathNavigator node)
{
if (node.MoveToAttribute("nil""http://www.w3.org/2001/XMLSchema-instance"))
      node.DeleteSelf();
}


上面这段代码是通用的,你能很简单的调用这段代码在你需要编程改变一个域的值之前。下面是一个例子,这段代码被一个按钮的click事件调用。

//Create a Navigator object for the main data source
// 为主数据源创建一个Navigator对象
XPathNavigator xn = this.MainDataSource.CreateNavigator();

//Create a navigator object for the field (node) 
//where we want to set the current date value
// 为你要设置当前日期值的一个域(节点)创建一个navigator对象
XPathNavigator xnfield1 = xn.SelectSingleNode("/my:myFields/my:field1"this.NamespaceManager);

//Check if the "nil" attribute exists on this node
// 检查节点是否存在 “nil”属性
DeleteNil(xnfield1);

//Create a new dateTime object for the current date
// 创建一个包含当前日期的新的dateTime对象
DateTime curDate = new DateTime(DateTime.Today.Year, DateTime.Today.Month, DateTime.Today.Day);

//Set the value of field1 to the current date in the 
//correct format: yyyy-mm-dd
// 设置field1的值为使用”yyyy-mm-dd”格式的当前日期
xnfield1.SetValue(curDate.GetDateTimeFormats().GetValue(5).ToString());


posted @ 2008-06-24 14:20 风中的猪儿 阅读(292) 评论(1) 编辑

2008年5月20日 #

下午公司需求人员和我说需要文档要带条码,心想这个还不简单,直接文档库设置-》信息管理策略设置-》定义策略-》把条码勾上。简单搞定~~~
然后在视图里把条码值和条码图形勾上,效果出来了。叫需求人员过来看一下,结果他提了一个需要自己传入条码值生成条码的需求,咱想,这还不简单,查一下Field,果然有个叫_dlc_BarcodeValue的field值,里面保存着条码值呢,修改他,update一下,刷新页面,傻了,只有条码值变了,条码图像并没有改变。这下犯难了,接着查Field,里面还有一个_dlc_BarcodePreview,和_dlc_BarcodeImage的属性,其中_dlc_BarcodeImage里存的是一个图片,显示出来的string全是乱七八糟的二进制的东西,看来这三个field都需要更改了,难道要我自己生成一个条形码的image然后存进去?

在GOOGLE上翻半天也没有什么结果。最后翻SDK,WSS SDK里还没有,是在Office sharepoint server文档中找到一个Barcode类,它有两个静态方法ProvisionBarcode 和ProvisionBarcodeWithValue 。

第一个方法是为SPListitem重新生成一个条形码值和图片,条码值是随机生成的,而第二个是按指定的条码值生成条码。
两个方法使用非常简单,我代码都不贴了,直接把参数贴出来吧
public static void ProvisionBarcode (
    SPListItem spListItem,
    
bool fOverwrite,
    
out string strValue,
    
out Image imBarcode
)
public static void ProvisionBarcodeWithValue (
    SPListItem spListItem,
    
bool fOverwrite,
    
ref string strValue,
    
out Image imBarcode
)

两个方法参数基本上一样
spListItem
需要重新生成的SPListItem。
fOverwrite
是否要覆盖当前的条码值(显然是要设成true)
strValue
条码值(这里注意一下,ProvisionBarcode 加上了out,意味着你传的这个strValue不需要初始化,方法完成后,这个strValue被赋了新的条码值,而ProvisionBarcodeWithValue使用的是ref,这要求你传入一个条码值,strValue必须先赋值,方法会按你传入的条码值生成图片等信息,还有,条码值是一个长度为10的字符串)
imBarcode
条码图像的Image对象。加上了out,不需要初始化。


乱七八糟的研究了点小东西……
posted @ 2008-05-20 16:40 风中的猪儿 阅读(509) 评论(3) 编辑

2008年5月15日 #

posted @ 2008-05-15 16:11 风中的猪儿 阅读(1010) 评论(1) 编辑

2008年3月4日 #

摘要: 要在MOSS中使用RMS,具体设置可以参考微软的文档,非常详细,下载地址http://www.microsoft.com/downloads/details.aspx?FamilyID=7bab2321-71e6-4cf2-8bcd-0880e0d1cda3&DisplayLang=en文档中用了三台服务器,一台AD服务器,一台MOSS服务器和一台RMS服务器,我的电脑较慢,不可能开三个虚...阅读全文
posted @ 2008-03-04 09:16 风中的猪儿 阅读(960) 评论(3) 编辑

2008年2月28日 #

摘要: 朋友向我索要SDK时,我直接发网址给他,让他自己下载,结果发现SDK前天刚更新做了一些改进,安装的时候,可以选择安装目录了同时,还增加了不少samples,特别是增加了search samples,这是原来没有的不错,马上下载看看有兴趣的朋友去看看吧http://www.microsoft.com/downloads/details.aspx?familyid=6D94E307-67D9-41AC...阅读全文
posted @ 2008-02-28 10:04 风中的猪儿 阅读(109) 评论(0) 编辑

2008年1月28日 #

摘要: 好久以前写着玩的,今天从邮箱里翻出来的时候都有点认不得自己写的代码了,当时写出来自己还得意了一番。。。结果刚才运行就出现错误,赶紧修改一下……果然还是一个半成品啊……不过,给有兴趣的朋友看看吧代码下载阅读全文
posted @ 2008-01-28 10:45 风中的猪儿 阅读(604) 评论(0) 编辑

2008年1月18日 #

摘要: 我们知道MOSS里所有的栏类型都是从SPField类继承过来的,在新建栏的类型中有项默认类型的叫做数字,我们需要的也是一个只读的数字栏,所以我们就拿这个开刀了。翻开SDK文档,这个数字栏的类型是SPFieldNubmer,它还派生出一个SPFieldCurrency类,我们也派生出一个类,就叫ReadOnlyCountField。本来我想做一个完整的自定义Field的,可是最近一直忙,上次写了一半...阅读全文
posted @ 2008-01-18 09:37 风中的猪儿 阅读(200) 评论(2) 编辑