BaseQueryForm 提供數據查詢的窗體
屬性
DisplayResultList:是否查詢後在後面顯示查詢結果列表
MultiResult:是否返回多條數據
QueryBuilder:查詢後返回的查詢構造器
ResultList:返回的結果List
ConfigFileName:配置文件
保護的方法
GetInfoFields:得到結果列表的列字段數組
重載方法
CreateListInstance:創建IList
BuildLists:根據查詢器查詢出數據
FormatValue:格式化數據
GetSelectedInfo:返回選定行的信息
GetItemValue:參見BaseTreeListForm中的相關介紹
QuerySetTypeListData:參見BaseTreeListForm中的相關介紹
QuerySetTypeTreeData:參見BaseTreeListForm中的相關介紹
事件
SetTypeListData:相同於QuerySetTypeListData
SetTypeTreeData:相同於QuerySetTypeTreeData
現在來看一個例子:
public frmMemberQuery()
{
InitializeComponent();
//要顯示查詢結果列表
DisplayResultList = true;
}
/// <summary>
/// 創建一個實體集合
/// </summary>
/// <param name="type"></param>
protected override void CreateListInstance(Type type)
{
base.CreateListInstance(typeof(TMembers));
}
/// <summary>
/// 獲取選定節點對應的實體信息
/// </summary>
/// <param name="node"></param>
/// <returns></returns>
protected override BaseModel GetSelectedInfo(Node node)
{
try
{
ATMember objDAL = (ATMember)DAFactory.CreateDA(typeof(ATMember));
TMember info = objDAL.Get(node.Tag);
objDAL.Dispose();
return info;
}
catch (System.Exception e)
{
Utility.ShowErrorMessage(e.Message);
}
return null;
}
/// <summary>
/// 構造信息集合
/// </summary>
/// <param name="queryArgs"></param>
/// <param name="isFull"></param>
/// <returns></returns>
protected override IList BuildLists(QueryBuilder qb)
{
try
{
ATMember da = (ATMember)DAFactory.CreateDA(typeof(ATMember));
qb.Append(QueryRelation.And, QueryCompare.Equal, TMember._MemerState, MemberState.Normal.ToString("D"));
return da.Select(qb, GetInfoFields());
}
catch (System.Exception e)
{
Utility.ShowErrorMessage(e.Message);
}
return null;
}
查詢字段的配置可在Config下建立 窗體類名.pcs 文件:
配置文件(Config/*.pcs)
<PropertyColumnConfig>
<Columns> //這節是查詢結果列字段配置列表
<Column>
<Type> TreeList的Column的類別
<Text> 列頭上顯示的文本
<Width> 寬度
<Align> 對齊
<ImageIndex> 圖標索引
<Visible> 是否可見
<Key> 對應的表字段
<Formater> 格式,當Type為NumberColumn或DateTimeColumn時設置
<CustomFormat> 自定義格式
</Column>
</Columns>
<Properties> //此節為查詢界面上字段的列表
<Property>
<PropertyName> 對應的表字段
<DisplayName> 顯示的標簽名稱
<ImeMode> 輸入法狀態
<Type> 查詢的類別
<EnumType> 如果Type為Enum則指定Enum類別名
</Property>
</Properties>
</PropertyColumnConfig>
如以上窗體對應的配置文件內容如下:
<?xml version="1.0" encoding="utf-8" ?>
<PropertyColumnConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Columns>
<Column>
<Type>Column</Type>
<Text>卡號</Text>
<Width>100</Width>
<Align>Left</Align>
<ImageIndex>0</ImageIndex>
<Visible>true</Visible>
<Key>Card</Key>
<Formater />
</Column>
<Column>
<Type>Column</Type>
<Text>姓名</Text>
<Width>80</Width>
<Align>Left</Align>
<ImageIndex>0</ImageIndex>
<Visible>true</Visible>
<Key>Name</Key>
<Formater />
</Column>
<Column>
<Type>NumberColumn</Type>
<Text>積分</Text>
<Width>80</Width>
<Align>Right</Align>
<ImageIndex>0</ImageIndex>
<Visible>true</Visible>
<Key>Score</Key>
<Formater />
</Column>
<Column>
<Type>NumberColumn</Type>
<Text></Text>
<Width>0</Width>
<Align>Right</Align>
<ImageIndex>0</ImageIndex>
<Visible>false</Visible>
<Key>Id</Key>
<Formater />
</Column>
</Columns>
<Properties>
<Property>
<PropertyName>Name</PropertyName>
<DisplayName>姓名</DisplayName>
<ImeMode>On</ImeMode>
<Type>String</Type>
</Property>
<Property>
<PropertyName>Card</PropertyName>
<DisplayName>卡號</DisplayName>
<ImeMode>Off</ImeMode>
<Type>String</Type>
</Property>
<Property>
<PropertyName>Score</PropertyName>
<DisplayName>總積分</DisplayName>
<Type>Decimal</Type>
</Property>
<Property>
<PropertyName>IdCard</PropertyName>
<DisplayName>身份證號</DisplayName>
<ImeMode>Off</ImeMode>
<Type>String</Type>
</Property>
<Property>
<PropertyName>Mobile</PropertyName>
<DisplayName>手機</DisplayName>
<ImeMode>Off</ImeMode>
<Type>String</Type>
</Property>
<Property>
<PropertyName>Address</PropertyName>
<DisplayName>地址</DisplayName>
<ImeMode>On</ImeMode>
<Type>String</Type>
</Property>
</Properties>
</PropertyColumnConfig>
下節該講報表 BaseReportForm 了。