响应jianyi大侠的codeArt (Codeing艺术) 的号召,借用了codeArt命名空间,整理出以前写的自定字段类型 Picker Lookup。

 

PickerLookupField 继承于SPLookupField ,实现了一些特别功能:

1. 放开了 SPLookupField中的WebId属性, 可以跨站点实现查阅选项功能

2. 基于EntityEditorWithPicker实现了类似[人员或组]字段类型的弹出选择功能(PeopleEditor)

 

需要说明的是:很多技术参照国外一个RecordLookupField控件的,不记得下载地址了,好像在msdn上找到的,

Project Name:CodeCounsel.SharePoint.Fields,可以在网上搜一下。

 a. 创建PickerLookupField字段类型

 

b. 键入并验证输入值

 

 c.  从弹出对话框中查询并选择值

 

 

另外,还照此思路,开放了一个通用控件,通过配置文件指定SQL, 可以实现在SHAREPOINT中对第三方数据选择功能。该控件还没测试,请到代码库下载。

配置文件结构如下: 


代码
   <pickerControls>
            
<add name="Product" title="产品查询"  description="请选择产品." >
                
<query rowLimit="500" connectionName="K3ConnectionString1">
                    
<![CDATA[
                  select {top} * from products  
                  where ItemID <> 0 {filter} 
]]>
                
</query>
                
<viewFields lookupIDField="FNumber" lookupNameField="FName">
                  
<fields>
                    
<add name="FNumber" value="代码"  columnWidth="20%"/>
                    
<add name="FName" value="名称" columnWidth="35%"/>
                    
<add name="FModel" value="规格" columnWidth="25%"/>
                    
<add name="FProperty" value="属性" columnWidth="20%"/>
                    
</fields>                
                
</viewFields>
            
</add>
            
<add name="PortInfo" title="港口查询" description="请选取港口.">
                
<query rowLimit="500"  connectionName="K3ConnectionString2">
                    
<![CDATA[
                  select {top} * from portinfo
                  Where ItemID<>0 {filter}
]]>
                
</query>
                
<viewFields lookupIDField="FNumber" lookupNameField="FName">
                    
<fields>
                    
<add name="FNumber" value="代码" />
                    
<add name="FName" value="名称" columnWidth="35%"/>
                    
<add name="FType" value="国别"/>
                    
</fields>
                
</viewFields>
            
</add>
        
</pickerControls>

这里的ConnectionName 指的是Web.Config中的ConnectionString

使用方法:在页面中  <codeArt:PickerSearch ID="pickerSearch2" PickerTemplateName="PortInfo" MultiSelect="false"
                    runat="server" /> ,指定
配置模板中设定的PickerTemplateName名字即可。

posted @ 2010-08-20 10:36  老万 - 一刀  阅读(1477)  评论(2编辑  收藏  举报