Uwakpeter Ответов: 1

Как динамически создать текстовое поле и вставить значение в базу данных в приложении c# windows form


В настоящее время я работаю над проектом формы окна C #, который будет использоваться для расчета подоходного налога с физических лиц для сотрудника, у меня возникла проблема со странным требованием моего клиента о динамическом создании надбавок в форме, у компаний разные политики относительно того, какие надбавки будут предоставляться Это сотрудник, я попытался зафиксировать популярные надбавки в приложении, а также предоставил текстовое поле для других надбавок, чтобы можно было ввести сумму других надбавок, которая не включена в форму заявки, поскольку приложение не будет использоваться только для одной компании проблема теперь такова: мой клиент не хочет, чтобы другие разрешения тексбокс, которые я включил в форму, он хочет иметь возможность щелкнуть что-то в форме, и это должно открыться, где он может ввести любые другие разрешения который не был включен в поля формы, я попробовал поставить метку для названия пособия и суммы пособия в форме, но это, похоже, не сработало, поскольку предприятия могли Это должно быть сделано один раз для каждого сотрудника в месяц, и их надбавки могут доходить до десяти, иногда в зависимости от компании. Я не знаю, делал ли кто-нибудь из наших старших коллег что-нибудь подобное, я буду признателен, если они поделятся со мной своими знаниями. Благодарность

Что я уже пробовал:

Я попробовал применить подход, заключающийся в том, чтобы поставить на бланке ярлык с названием пособия и суммой пособия, но это, похоже, не сработало, так как входы можно было сделать только один раз для каждого сотрудника в месяц, а их надбавки иногда могли доходить до десяти в зависимости от компании.

Prifti Constantine

Одним из решений было бы создание строкового конструктора с соответствующей строкой, которая создавала бы разметку в клиенте, а затем возвращала бы эту строку, чтобы она создавалась по требованию. Если хотите, я мог бы привести несколько примеров, но я не уверен, что это то, о чем вы спрашиваете . С наилучшими пожеланиями!

Uwakpeter

это windows из приложения, не уверенного в разметке, кроме того, если я использую string builder для создания разметки, которая позволит пользователям вводить несколько надбавок для конкретного сотрудника одновременно, как я буду сохранять их в базе данных и отображать их в разных столбцах отчета в отчете? видя, что я буду экономить только в двух полях (имя пособия и сумма пособия) Я буду признателен за некоторые примеры , как вы сказали, спасибо.

1 Ответов

Рейтинг:
2

CHill60

Похоже, ваш "клиент" хочет получить всплывающее диалоговое окно (модальное) для надбавок.

Я бы предложил отобразить список надбавок на каждого отдельного сотрудника в списке на форме - сделать его прокручиваемым, чтобы не имело значения, сколько их там. Вы также можете рассмотреть возможность использования ComboBox для ввода любых надбавок, которые не являются "стандартными", но вы можете столкнуться с проблемами с доходом, если уйдете слишком далеко от стандартных условий.
Ссылка: Выпадающие списки и поля со списком (Windows)[^]

Если вы используете модальный диалог, то эта статья может оказаться полезной (в самой статье есть дополнительные ссылки на статьи)
Передача информации между двумя формами, Часть 1: Родитель-Ребенок[^]

Наконец, на стороне пользовательского интерфейса было бы лучше использовать кнопку, чем метку, чтобы вызвать диалог.

Что касается базы данных, то не надо, я действительно имею в виду, не храните эти припуски в виде одной строки. Это настоящая боль, чтобы управлять ими, настоящая боль, чтобы использовать их, и в конце концов у вас не хватит места в колонках, чтобы хранить их. Это худший из возможных вариантов дизайна, который вы могли бы выбрать. (Вы догадались, что мне действительно не нравится эта идея? :-) )
Лучшим решением является наличие связывающей таблицы...например

Table Employee (EmpId, FirstName, LastName, etc)
Table Allowances (AllowId, Description, etc)

Такая таблица может связать надбавки с конкретными сотрудниками:
Create table AllowEmpl
(
    EmpId int,   -- Foreign Key to Employee table
    AllowId int  -- Foreign Key to Allowances table
)
Используя эту конструкцию, вы можете иметь неограниченные надбавки на одного сотрудника, они легко вставляются, ищутся, удаляются, и вам не придется менять схему базы данных при добавлении дополнительных надбавок.


Uwakpeter

если я использую listbox или drop downlist, каково будет содержание выпадающих элементов или элементов списка, видя, что те надбавки, которые не являются стандартными, не известны на момент разработки, и он хочет иметь возможность ввести как можно больше надбавок, которые доступны для конкретного сотрудника перед отправкой формы. Это действительно странно, я немного сбит с толку.

CHill60

ComboBox начнет заполняться, когда пользователь вводит элементы. В первый раз список будет пуст. При повторном открытии список будет заполнен из базы данных. Я бы предложил вам добавить эти "нестандартные надбавки" в базу данных, чтобы они стали "стандартными" для этого клиента и доступными для "выбора" из выпадающего списка для любого сотрудника (в противном случае клиенту придется много перепечатывать и он не будет доволен)