Пример #1
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);
            }
        }
Пример #2
0
        private void tsbOk_Click(object sender, EventArgs e)
        {
            foreach (DataRow row in dt_data.Rows)
            {
                EditingValue ev = (EditingValue)row["Data"];

                try
                {
                    if (ev.Value is String && (string)ev.Value == "" && current_row[ev.FieldDBName] == System.DBNull.Value)
                    {
                        continue;
                    }
                    current_row[ev.FieldDBName] = ev.Value;
                }
                catch (Exception)
                {
                    System.Windows.Forms.MessageBox.Show("Вы ввели неверное значение для поля " + ev.FieldName, "Ошибка", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
                    return;
                }
            }

            DialogResult = System.Windows.Forms.DialogResult.OK;
            Close();
        }