我正在编写一个打印物理标签的程序。您将建立一个标签队列(在数据库表中),程序稍后将运行该标签并进行打印。我目前正在编码一个允许您修改队列的部分。本质上,数据行已导出为一系列允许您更改的文本框中的可视形式。单击按钮,然后从中更新相应的行。 该行的更新工作正常。我的问题是更新无法持久保存程序关闭。数据库中的附加项和删除项一样持续存在,这使我感到困惑。尽管我将数据库“复制到输出目录”更改为“如果较新则复制”,但更新问题解决了添加/删除的持久性(感谢Stack Overflow)。
我也尝试过使用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);
}
正如我所说,没有收到错误。只是添加和删除例程的结果(未提供删除例程)确实会使程序关闭,但是更新例程的效果却没有。任何指导将不胜感激,谢谢