Esempio n. 1
0
        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;
                }
            }
        }
Esempio n. 2
0
        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);
            }
        }