响应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>
<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名字即可。