Я пишу программу, которая печатает физические метки. Вы создаете очередь меток (в таблице базы данных), которую программа позже запускает и печатает. В настоящее время я кодирую часть, которая позволяет вам изменить свою очередь. По сути, данные были экспортированы в визуальную форму в виде серии текстовых полей, которые вы можете изменять. Нажатие кнопки затем обновляет соответствующую строку из них.
Обновление в строке работает нормально. Моя проблема в том, что обновление не сохраняется, программа закрывается. Сохраняются дополнения к базе данных, также как и удаления, что меня смущает. Проблема обновления несмотря на то, что я изменил базу данных «копировать в выходной каталог» на «Копировать, если новее», что решило проблему добавления / удаления (спасибо за это переполнению стека).
Я также пытался использовать метод LoadDataRow и изменять связанную сетку данных, но эффект тот же.
Это процедура обновления
Это работает, но обновление отменяется, если вы закроете программу и перезапустите:
private void buttonUpdateQLine_Click(object sender, EventArgs e)
{
int indexOfRow = int.Parse(textBoxQ0.Text); //gets row to update
for (int i = 1; i <= 25; i++) //move through textboxes and update appropriate column
{
TextBox curText = (TextBox)panelQueueUtilities.Controls["textBoxQ" + i.ToString()];
string changeText = curText.Text.ToString();
databaseLabelsDataSetMainQueue.Tables[0].Rows[indexOfRow].SetField(i, changeText);
}
databaseLabelsDataSetMainQueue.Tables[0].AcceptChanges();
try
{
tableMainQueueTableAdapter.Update(databaseLabelsDataSetMainQueue.TableMainQueue);
}
catch (System.Exception ex)
{
MessageBox.Show("Failed to update to Main Queue - " + ex);
}
}
Это процедура, которую я использую для добавления строки. Дополнение постоянное!
private void addRowToMainQ()
{
string[] queue = CollectQueueEntry(); // gets the data elsewhere
DataRow row = databaseLabelsDataSetMainQueue.Tables[0].NewRow();
//row["Id"] = "1";
row["Name"] = queue[0];
int answer = 0;
int.TryParse(queue[1], out answer);
row["qty"] = answer;
row["Price"] = queue[2];
row["PotSize"] = queue[3];
row["Customer"] = queue[4];
row["Barcode"] = queue[5];
row["Description"] = queue[6];
row["CommonName"] = queue[7];
row["PictureFile"] = queue[8];
row["ColourFont"] = queue[9];
row["ColourFontColour"] = queue[10];
row["FontBold"] = queue[11];
row["FontItalic"] = queue[12];
row["ColourBorderColour"] = queue[13];
row["ColourBackgroundColour"] = queue[14];
row["notes"] = queue[15];
row["Genus"] = queue[16];
row["Species"] = queue[17];
row["Variety"] = queue[18];
row["AGM"] = queue[19];
row["Picture1"] = queue[20];
row["Picture2"] = queue[21];
row["Picture3"] = queue[22];
row["Picture4"] = queue[23];
row["OrderNo"] = queue[24];
databaseLabelsDataSetMainQueue.TableMainQueue.Rows.Add(row);
dataGridViewMainQ.EndEdit();
try
{
tableMainQueueTableAdapter.Update(databaseLabelsDataSetMainQueue.TableMainQueue);
}
catch (System.Exception ex)
{
MessageBox.Show("Failed to add to Main Queue - " + ex);
}
Как я уже сказал, ошибки не получено. Просто продукт подпрограммы добавления и удаления (подпрограмма удаления не предусмотрена) действительно сохраняет работу программы, а эффекты процедуры обновления - нет. Любое руководство будет с благодарностью, спасибо