Camstar Set Selection Data Source For DDL

本文内容仅做参考并不完全通用,测试环境为OpcenterEXCR2410,其中数据均为演示所用无实际意义

在Designer中设置(推荐)

1.在Queries中新增一个Query名为wzmPNChange_GetNewProduct,其中ProductType为自定义参数,NameFilter为下拉控件中的模糊搜索参数

1
2
3
4
5
6
7
8
9
10
select
pb.productname as Name,
p.productrevision as Revision,
p.productid as InstanceID
from product p
inner join productbase pb on p.productbaseid = pb.productbaseid
inner join producttype pt on p.producttypeid = pt.producttypeid
where 1=1
<{?ProductType}>?<{ and pt.producttypename = ?ProductType}>
<{?NameFilter}>?<{ and pb.productname like ?NameFilter}>

2.在CLFs中新增一个CLF方法wzmPNChange_GetNewProduct进行两组参数的合并和Query的执行

3.在服务中为该控件的字段绑定SelectValuesEx并在Selection Values中选择CLF

在CS代码中设置(不推荐)

1.并不推荐在CS代码中直接为其赋值,因为赋值后暂时无法使用控件上的模糊搜索,但其实现方式可以进行参考

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
public static void NamedObjectControl_SetSelectionValues(ref CWC.NamedObject NamedObjectControl, NamedObjectRef[] NamedObjectRefList)
{
try
{
RecordSet rsNamedObject = new RecordSet();
Header[] rsHeaders = new Header[1];
Row[] rsRows = new Row[NamedObjectRefList.Length];

rsHeaders[0] = new Header();
rsHeaders[0].TypeCode = TypeCode.String;
rsHeaders[0].Name = "Name";

rsNamedObject.Headers = rsHeaders;

for (int x = 0; x <= NamedObjectRefList.Length - 1; x++)
{
rsRows[x] = new Row();
string[] strRowValues = new string[1];
strRowValues[0] = NamedObjectRefList[x].Name;
rsRows[x].Values = strRowValues;
}

rsNamedObject.Rows = rsRows;
NamedObjectControl.SetSelectionValues(rsNamedObject);
}
catch
{}
} // NamedObjectControl_SetSelectionValues

public static void NamedSubentityControl_SetSelectionValues(ref CWC.NamedSubentity NamedSubentityControl, NamedSubentityRef[] NamedSubentityRefList)
{
try
{
RecordSet rsNamedObject = new RecordSet();
Header[] rsHeaders = new Header[2];
Row[] rsRows = new Row[NamedSubentityRefList.Length];

rsHeaders[0] = new Header();
rsHeaders[0].TypeCode = TypeCode.String;
rsHeaders[0].Name = "Name";

rsHeaders[1] = new Header();
rsHeaders[1].TypeCode = TypeCode.String;
rsHeaders[1].Name = "ID";

rsNamedObject.Headers = rsHeaders;

for (int x = 0; x <= NamedSubentityRefList.Length - 1; x++)
{
rsRows[x] = new Row();
string[] strRowValues = new string[2];
strRowValues[0] = NamedSubentityRefList[x].Name;
strRowValues[1] = NamedSubentityRefList[x].ID;
rsRows[x].Values = strRowValues;
}

rsNamedObject.Rows = rsRows;
NamedSubentityControl.SetSelectionValues(rsNamedObject);
}
catch
{ }
} // NamedSubentityControl_SetSelectionValues

public static void DropDownListControl_SetSelectionValues(ref CWC.DropDownList DropDownListControl, NamedObjectRef[] DropDownRefList)
{
try
{
RecordSet rsNamedObject = new RecordSet();
Header[] rsHeaders = new Header[2];
Row[] rsRows = new Row[DropDownRefList.Length];

rsHeaders[0] = new Header();
rsHeaders[0].TypeCode = TypeCode.String;
rsHeaders[0].Name = "Name";

rsHeaders[1] = new Header();
rsHeaders[1].TypeCode = TypeCode.String;
rsHeaders[1].Name = "ID";

rsNamedObject.Headers = rsHeaders;

for (int x = 0; x <= DropDownRefList.Length - 1; x++)
{
rsRows[x] = new Row();
string[] strRowValues = new string[2];
strRowValues[0] = DropDownRefList[x].Name;
strRowValues[1] = DropDownRefList[x].ID;
rsRows[x].Values = strRowValues;
}

rsNamedObject.Rows = rsRows;
DropDownListControl.SetSelectionValues(rsNamedObject);
}
catch
{ }
} // DropDownListControl_SetSelectionValues

public static void RevisionedObjectControl_SetSelectionValues(ref CWC.RevisionedObject RevisionedObjectControl, RevisionedObjectRef[] RevObjectRefList)
{
try
{
RecordSet rsRevisionedObject = new RecordSet();
Header[] rsHeaders = new Header[7];
Row[] rsRows = new Row[RevObjectRefList.Length];

rsHeaders[0] = new Header();
rsHeaders[0].TypeCode = TypeCode.String;
rsHeaders[0].Name = "Name";

rsHeaders[1] = new Header();
rsHeaders[1].TypeCode = TypeCode.String;
rsHeaders[1].Name = "Revision";

rsHeaders[2] = new Header();
rsHeaders[2].TypeCode = TypeCode.String;
rsHeaders[2].Name = "RevOfRcd";

rsHeaders[3] = new Header();
rsHeaders[3].TypeCode = TypeCode.Boolean;
rsHeaders[3].Name = "IsFrozen";

rsHeaders[4] = new Header();
rsHeaders[4].TypeCode = TypeCode.String;
rsHeaders[4].Name = "InstanceId";

rsHeaders[5] = new Header();
rsHeaders[5].TypeCode = TypeCode.String;
rsHeaders[5].Name = "Description";

rsHeaders[6] = new Header();
rsHeaders[6].TypeCode = TypeCode.Int16;
rsHeaders[6].Name = "Status";

rsRevisionedObject.Headers = rsHeaders;

// sort the revisioned objects
Hashtable htNameRev = new Hashtable();
Hashtable htNameROR = new Hashtable();
foreach (RevisionedObjectRef rdoRef in RevObjectRefList)
{
if (!htNameRev.ContainsKey(rdoRef.Name))
{
List<string> RevArray = new List<string>();
RevArray.Add(rdoRef.Revision);
htNameRev.Add(rdoRef.Name, RevArray);
}
else
{
List<string> RevArray = htNameRev[rdoRef.Name] as List<string>;
RevArray.Add(rdoRef.Revision);
htNameRev[rdoRef.Name] = RevArray;
}

// set the ror object
if (rdoRef.RevisionOfRecord != null? rdoRef.RevisionOfRecord.Value : false)
{
if (!htNameROR.ContainsKey(rdoRef.Name))
htNameROR.Add(rdoRef.Name, rdoRef.Revision);
}
}

int intIndex = 0;
foreach (DictionaryEntry objItem in htNameRev)
{
List<string> RevArray = objItem.Value as List<string>;
foreach (string strRevValue in RevArray)
{
rsRows[intIndex] = new Row();
string[] strRowValue = new string[7];
strRowValue[0] = objItem.Key.ToString(); // name
strRowValue[1] = strRevValue; // rev

string strRevOfRecInstanceId = objItem.Key.ToString() + "_" + strRevValue;
if (htNameROR.ContainsKey(objItem.Key.ToString()))
strRevOfRecInstanceId = objItem.Key.ToString() + "_" + htNameROR[objItem.Key.ToString()].ToString();

strRowValue[2] = strRevOfRecInstanceId; // revOfRcdInstanceId
strRowValue[3] = "false"; // IsFrozen
strRowValue[4] = objItem.Key.ToString() + "_" + strRevValue; // InstanceId
strRowValue[5] = ""; // Description
strRowValue[6] = "1"; // Status

rsRows[intIndex].Values = strRowValue;

intIndex++;
}
}

rsRevisionedObject.Rows = rsRows;
RevisionedObjectControl.SetSelectionValues(rsRevisionedObject);
}
catch
{ }
} // RevisionedObjectControl_SetSelectionValues