本文整理汇总了C#中System.Data.PropertyCollection.Add方法的典型用法代码示例。如果您正苦于以下问题:C# PropertyCollection.Add方法的具体用法?C# PropertyCollection.Add怎么用?C# PropertyCollection.Add使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Data.PropertyCollection
的用法示例。
在下文中一共展示了PropertyCollection.Add方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Clone
public override object Clone() {
// override Clone so that returned object is an
// instance of PropertyCollection instead of Hashtable
PropertyCollection clone = new PropertyCollection();
foreach (DictionaryEntry pair in this) {
clone.Add(pair.Key, pair.Value);
}
return clone;
}
示例2: GetUserDefinedSounds
/// <summary>
/// Retrieves the user-defined sounds from the registry
/// </summary>
private PropertyCollection GetUserDefinedSounds()
{
string rootKey = "AppEvents\\Schemes\\Apps\\.Default";
PropertyCollection coll = new PropertyCollection();
try
{
// open root key
key1 = Registry.CurrentUser.OpenSubKey(rootKey, false);
// go through each subkey
foreach (string subKey in key1.GetSubKeyNames())
{
// open subkey
key2 = key1.OpenSubKey(subKey + "\\.Current", false);
// get filename, if any
if (key2 != null)
if (key2.GetValue(null).ToString().Length > 0)
coll.Add(subKey, key2.GetValue(null).ToString());
}
}
catch (Exception ex)
{
MessageBox.Show(this, ex.Message, "Yikes!", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally
{
// close keys
key1.Close();
key2.Close();
}
return coll;
}
示例3: PanelFields
private List<Field> PanelFields(int idPanel)
{
DataTable tbl = fetchAll("SELECT * FROM fields JOIN field_types USING(id_field) WHERE id_panel = ", idPanel);
List<Field> res = new List<Field>();
foreach(DataRow row in tbl.Rows){
int typeId = (int) row["id_type"];
int fieldId = (int)row["id_field"];
PropertyCollection properties = new PropertyCollection();
PropertyCollection rules = new PropertyCollection();
PropertyCollection controlOptions = new PropertyCollection();
DataTable propsTab = fetchAll("SELECT name, val, concerns FROM fields_meta WHERE id_field = ", fieldId);
foreach(DataRow propRow in propsTab.Rows)
switch((string)propRow["concerns"]){
case "view":
properties.Add(propRow["name"], propRow["val"]);
break;
case "validation":
rules.Add(propRow["name"], propRow["val"]);
break;
case "controls":
controlOptions.Add(propRow["name"], propRow["val"]);
break;
default:
throw new Exception("Cannot handle metadata about " + propRow["concerns"].ToString() + " (yet).");
}
properties.Add("caption", row["caption"] as string);
string typeName = row["type_name"] as string;
if(!controlOptions.ContainsKey("isFK") && !controlOptions.ContainsKey("isM2NMapping")){
res.Add(new Field(fieldId, (string)row["column_name"], typeId, (string)row["type_name"], idPanel, properties, rules));
continue; // just a standard field
}
// FK or M2NMapping
string myTable = fetchSingle("SELECT table_name FORM panels WHERE id_panel = ", idPanel) as string;
string myColumn = row["column_name"] as string;
string refTable = controlOptions[CC.FIELD_REF_TABLE] as string;
string refColumn = controlOptions[CC.FIELD_REF_COLUMN] as string;
string displayColumn = controlOptions[CC.FIELD_DISPLAY_COLUMN] as string;
if(controlOptions.ContainsKey("isFK")){ // foreign key
FKMySql fk = new FKMySql(myTable, myColumn, refTable, refColumn, displayColumn);
res.Add(new FKField(fieldId, myColumn, typeId, typeName, idPanel, fk, properties, rules));
}
// M2NMapping
string mapTable = controlOptions[CC.FIELD_MAP_TABLE] as string;
string mapMyColumn = controlOptions[CC.FIELD_MAP_MY_COLUMN] as string;
string mapRefColumn = controlOptions[CC.FIELD_REF_COLUMN] as string;
M2NMappingMySql mapping = new M2NMappingMySql(myTable, myColumn, refTable, refColumn, mapTable, displayColumn, mapMyColumn, mapRefColumn);
res.Add(new M2NMappingField(fieldId, myColumn, typeId, typeName, idPanel, mapping, properties, rules));
}
return res;
}
示例4: getPanel
public IPanel getPanel(int panelId, bool recursive = true, IPanel parent = null)
{
DataRow panelRow = fetch("SELECT * FROM panels "
+ " JOIN panel_types USING(id_panel) WHERE id_panel = ", panelId);
List<Field> fields = PanelFields(panelId);
List<string> PKColNames = new List<string>(((string)panelRow["pk_column_names"]).Split(','));
PropertyCollection viewProperties = new PropertyCollection();
PropertyCollection controlProperties = new PropertyCollection();
// !! attrs to handle global validation rules needed?
DataTable propsTab = fetchAll("SELECT name, val, concerns FROM panels_meta WHERE id_panel = ", panelId);
foreach(DataRow row in propsTab.Rows)
switch(row["concerns"] as string){
case CC.ATTR_VIEW:
viewProperties.Add(row["name"], row["val"]);
break;
case CC.ATTR_CONTROLS:
controlProperties.Add(row["name"], row["val"]);
break;
default:
throw new Exception("Cannot handle panel properties concerning "
+ row["concerns"] as string + " (yet). ");
}
//determine the controls
List<Control> controls = new List<Control>(); // TODO (probably don`t) rewrite into enum over PanelTypes
string pTypeStr = (string)panelRow["type_name"];
switch(pTypeStr){
case Constants.PANEL_EDITABLE: // standard edit window
case Constants.PANEL_NAVTABLE:
foreach(UserAction action in Enum.GetValues(typeof(UserAction))){
if((action == UserAction.View && pTypeStr == Constants.PANEL_EDITABLE)
|| (action == UserAction.Update && pTypeStr == Constants.PANEL_NAVTABLE
) ) continue;
string actionName = action.ToString();
string controlCaption = (string)controlProperties[actionName]; //!!
if(controlCaption != CC.CONTROL_DISABLED &&
(int)controlProperties[actionName + "ALR"] <= CE.user.rights){ // Authorization Level Required
controls.Add(new Control(controlCaption, action));
}
}
break;
case CC.PANEL_MONITOR: // just display, no controls
break;
case CC.PANEL_MENUDROP: // the contol is the whole panel, do not load data
case CC.PANEL_MENUTABS: // will be a field type
case CC.PANEL_NAVTREE:
string localActionName = UserAction.View.ToString();
// duplicite information about controls - in controlProperties and as Control objects. For Proposal phase use only
if((string)controlProperties[localActionName] != CC.CONTROL_DISABLED && // there is sth to show and user can see it
(int)controlProperties[localActionName + "ALR"] <= (int)CE.user.rights){
DataTable controlTabStruct = new DataTable();
List<string> displayColumns = new List<string>( // table structure for summary
(viewProperties[CC.PANEL_DISPLAY_COLUMN_ORDER] as string).Split(',')); // already in database - only first few columns
string panelTypeName = (string)panelRow["type_name"];
if (panelTypeName == CC.PANEL_MENUTABS)
{ // will take data from children (captions as panel Names)
controlTabStruct.Columns.Add("childPanelName");
controls.Add(new Control(controlTabStruct, "childPanelName", UserAction.View));
}
else
{ // gotta be navTree or menuDrop => treeControl
if (PKColNames.Count > 1) // must have single PKcol
throw new Exception("Tree hierarchies must have single-column primay key");
controlTabStruct.Columns.Add(PKColNames[0]);
controlTabStruct.Columns.Add(controlProperties[CC.CONTROL_HIERARCHY_SELF_FK_COL] as string);
controlTabStruct.Columns.Add(displayColumns[0]);
controls.Add(new TreeControl(
controlTabStruct, PKColNames[0], controlProperties[CC.CONTROL_HIERARCHY_SELF_FK_COL] as string,
displayColumns[0], UserAction.View));
}
}
break;
}
List<IField> fieldsAsInterface = new List<IField>(fields);
List<IControl> controlsAsInterface = new List<IControl>(controls);
Panel res = new Panel(panelRow["table_name"] as string, panelId,
(int)panelRow["id_type"], panelRow["type_name"] as string, null,
fieldsAsInterface, controlsAsInterface, PKColNames, null, viewProperties, controlProperties, parent);
if(recursive) res.AddChildren(getPanelChildren(res, true));
return res;
}
示例5: deserializeExtendedProperties
private void deserializeExtendedProperties(PropertyCollection properties)
{
object[] keys = reader.ReadOptimizedObjectArray();
object[] values = reader.ReadOptimizedObjectArray();
for(int i = 0; i < keys.Length; i++)
{
properties.Add(keys[i], values[i]);
}
}
示例6: Message
/// <summary>
/// Constructor: used for deserialization
/// </summary>
/// <param name="info">Standard <c>SerializationInfo</c> object</param>
/// <param name="ctxt">Standard <c>StreamingContext</c> object</param>
public Message(SerializationInfo info, StreamingContext ctxt)
{
bool b_dest_addr = info.GetBoolean("b_dest_addr");
if (b_dest_addr)
dest_addr = (Address)info.GetValue("dest_addr",typeof(object));
bool b_src_addr = info.GetBoolean("b_src_addr");
if (b_src_addr)
src_addr = (Address)info.GetValue("src_addr",typeof(object));
int bufferLength = info.GetInt32("bufferLength");
if (bufferLength > 0)
{
buf = new byte[bufferLength];
for(int i = 0; i< bufferLength;i++)
{
buf[i] = info.GetByte(i.ToString());
}
}
String strHeaders = info.GetString("strHeaders");
headers = new PropertyCollection();
if (String.Compare(strHeaders,"NULL")!=0)
{
String[] headerArray = strHeaders.Split(':');
for(int j = 0;j<headerArray.Length;j++)
{
headers.Add(headerArray[j],info.GetValue(headerArray[j],typeof(object)));
}
}
}