Как добавить новый компонент со значениями поля со списком в базу данных?
- Это моя функция добавления, чтобы попытаться добавить новый компонент с помощью поля со списком, но она всегда терпит неудачу, потому что не может получить данные в cbbDivision,
private bool save() { try { if (txtMoney != null && txtSubject != null && txtMemo1 != null && txtTitle != null && txtAmount != null && txtMemo2 != null) { DateTime date; string division = ""; float money; string subject = ""; string memo1 = ""; string title = ""; int amount; string memo2 = ""; date = DateTime.Parse(dtDate.Value.ToString()); division = cbbDivision.Text.ToString(); money = float.Parse(txtMoney.Text.ToString()); subject = txtSubject.Text.ToString(); memo1 = txtMemo1.Text.ToString(); title = txtTitle.Text.ToString(); amount = Int32.Parse(txtAmount.Text.ToString()); memo2 = txtMemo2.Text.ToString(); HanbiDBDataContext db = new HanbiDBDataContext(); DataManage data = new DataManage(); data.Date = date; data.divId = Int32.Parse(cbbDivision.GetItemText(cbbDivision.SelectedItem)); data.Money = money; data.Subject = subject; data.Memo1 = memo1; data.Title = title; data.Amount = amount; data.Memo2 = memo2; db.DataManages.InsertOnSubmit(data); db.SubmitChanges(); XtraMessageBox.Show("Add Success!"); } return true; } catch (Exception) { XtraMessageBox.Show("Please insert information!", "Warning!", MessageBoxButtons.OK, MessageBoxIcon.Warning); return false; } }
- Это моя БД:
CREATE TABLE DataManage ( Id int primary key identity (1, 1), [Date] datetime, [Subject] varchar(200), Title varchar(200), [Money] float, Memo1 varchar(200), Memo2 varchar(200), Amount int, divId int foreign key references Division(dId) )
CREATE TABLE Division ( dId int primary key identity(1, 1), dName varchar(10) )
- Я использую LINQ для подключения к базе данных и отображения данных с помощью GridControl. И я получаю значения таблицы деления с помощью dataBindingSource
private void AddNew_Load(object sender, EventArgs e) { HanbiDBDataContext db = new HanbiDBDataContext(); divisionBindingSource.DataSource = db.Divisions.ToList(); }
Что я уже пробовал:
Я пытался добавить новые значения в поле со списком вручную и снова проверить, но это все равно ошибка. Кто - нибудь может помочь мне решить эту проблему, пожалуйста?
F-ES Sitecore
Что происходит, когда вы проходите через отладчик? Как далеко может зайти код? Какой путь он избирает? Вы получаете исключения, брошенные?
Dungg Lee
Когда я запускаю его, он всегда идет на catch(ex), что означает, что данные в combobox равны нулю, потому что когда я удаляю эту строку:
данных.дивиди = int32 значение.Синтаксический анализ(cbbDivision.GetItemText(cbbDivision.Элемент));
Он может добавить новый компонент.
F-ES Sitecore
Вы не знаете, почему возникает исключение, потому что вы игнорируете детали исключения. cboDivision может быть null, элемент может иметь значение null, или, может быть, разобрать не удалось, потому что текст не может быть преобразован к int. Это бессмысленно гадать и делать предположения, вам нужно научиться отлаживать свой код, чтобы вы могли точно знать, в чем проблема, и идти оттуда.