private void btnSelect_Click(object sender, EventArgs e) { HierarchicalRefEdit hre = new HierarchicalRefEdit(); hre.reference_db_name = ev.RefDBName; hre.select_mode = true; hre.select_mode_multiselect = ev.isMultiRef; if (ev.Value != System.DBNull.Value && !hre.select_mode_multiselect) { hre.selected_ids.Add((int)ev.Value); } if (ev.Value != System.DBNull.Value && hre.select_mode_multiselect) { //Поставим галки у выбранных DataTable dt_selected_ids = DBFunctions.ReadFromDB(@"SELECT ID AS RefID FROM ref_data_" + ev.RefDBName + @" WHERE LOCATE(concat('{',CAST(ID AS CHAR),'}'),'" + (string)ev.Value + "') > 0"); foreach (DataRow ref_id_row in dt_selected_ids.Rows) { hre.selected_ids.Add((int)ref_id_row["RefID"]); } } if (hre.ShowDialog() == System.Windows.Forms.DialogResult.OK) { if (!hre.select_mode_multiselect) { ev.Value = hre.selected_ids[0]; ev.SetDisplayName(); tbText.Text = ev.DisplayName; } else { string result_ids = ""; foreach (int sel_id in hre.selected_ids) { result_ids += "{" + Convert.ToString(sel_id) + "}"; } ev.Value = result_ids; ev.SetDisplayName(); tbText.Text = ev.DisplayName; } } }
public TableRecordEditorNew(string tn, DataRow row, bool write_rights) { InitializeComponent(); dt_data = new DataTable(); dt_data.Columns.Add("Description", typeof(String)); dt_data.Columns.Add("Data", typeof(EditingValue)); table_name = tn; current_row = row; DataTable dt_table_db_name = DBFunctions.ReadFromDB("SELECT DISTINCT TableDBName FROM tableconfig WHERE TableName = '" + table_name + "'"); if (dt_table_db_name.Rows.Count != 0) { table_db_name = (string)dt_table_db_name.Rows[0]["TableDBName"]; } else { throw new Exception("Таблица не найдена в базе данных."); } dt_table_structure = DBFunctions.ReadFromDB("SELECT ColumnName,ColumnDBName,ColumnType,ColumnReference,ReferenceMultiSelect FROM tableconfig WHERE TableName = '" + table_name + "'"); tsbOk.Enabled = write_rights; foreach (DataRow struct_row in dt_table_structure.Rows) { DataRow new_row = dt_data.NewRow(); new_row["Description"] = struct_row["ColumnName"]; EditingValue ev = new EditingValue(); ev.FieldDBName = (string)struct_row["ColumnDBName"]; ev.FieldName = (string)struct_row["ColumnName"]; ev.isReference = (Convert.ToString(struct_row["ColumnType"]) == "Справочник"); ev.Value = current_row[ev.FieldDBName]; if (ev.isReference) { ev.RefDBName = (string)struct_row["ColumnReference"]; ev.isMultiRef = (bool)struct_row["ReferenceMultiSelect"]; } ev.SetDisplayName(); new_row["Data"] = ev; dt_data.Rows.Add(new_row); } }