簡體   English   中英

在ASP.NET中更新gridview時出現問題

[英]Problem while updating the gridview in ASP.NET

我在第一列和第二列以及接下來兩列的文本框進行編輯時,具有帶有下拉列表的gridview'GridViewMcm'。PairId是表的主鍵。

以下是Onrowupdating事件的代碼。

SqlConnection mySQLconnection = new SqlConnection(con);
mySQLconnection.Open(); 
DropDownList drdList1, drdlist2;
drdList1 = (DropDownList)(GridViewMcm.Rows[e.RowIndex].Cells[0].FindControl("ddeditfrom"));
drdlist2 = (DropDownList)(GridViewMcm.Rows[e.RowIndex].Cells[1].FindControl("ddeditto"));
TextBox txtrate, txtdesc;
txtrate = (TextBox)(GridViewMcm.Rows[e.RowIndex].Cells[2].FindControl("txteditrate"));
txtdesc = (TextBox)(GridViewMcm.Rows[e.RowIndex].Cells[3].FindControl("txteditdesc"));
SqlCommand strupdate = new SqlCommand("Update mcmtable set Measure1FromSymbol = @Measure1FromSymbol, Measure2ToSymbol = @Measure2ToSymbol, ConversionRate = @ConversionRate, ConversionDesc = @ConversionDesc Where MeasurePairId=@PairId", mySQLconnection);
strupdate.Parameters.Add("@Measure1FromSymbol", SqlDbType.Text).Value = drdList1.SelectedValue;
strupdate.Parameters.Add("@Measure2ToSymbol", SqlDbType.Text).Value = drdlist2.SelectedValue;
strupdate.Parameters.Add("@ConversionRate", SqlDbType.Decimal).Value = decimal.Parse(txtrate.Text);
strupdate.Parameters.Add("@ConversionDesc", SqlDbType.Text).Value = txtdesc.Text;
strupdate.Parameters.Add("@PairId", SqlDbType.Int).Value = Convert.ToInt32(GridViewMcm.DataKeys[e.RowIndex].Values[0].ToString());
strupdate.ExecuteNonQuery();
GridViewMcm.EditIndex = -1;       

這是執行上述代碼時出現的錯誤:

“違反UNIQUE KEY約束'U_mcmtable'。無法在對象'mcmtable'中插入重復的鍵。該語句已終止。”

我發現問題在於下拉列表值'drdlist1.SelectedValue'和'drdlist2.SelectedValue'無法獲取下拉列表中的selectedvalue,而是獲取一些默認值。 並且由於它們要獲取的默認值已作為特定行的組合存在於表中,因此拋出了錯誤。 上面的代碼部分是否有任何錯誤?

檢查數據庫中的U_mcmtable約束。 我的猜測是為from和to字段設置了約束,並且您嘗試更新為表中已經存在的轉換組合。

該錯誤表示您正在嘗試在列名[Name]中插入重復的值在該列上設置了唯一約束,這意味着該列中的值應該是唯一的

您可以通過以下方式獲取mcmtable表上所有約束的列表:

SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
where Table_Name='mcmtable'

檢查您要在受影響的表中插入/更新的數據。 驗證您試圖插入/更新的數據在表中不存在,這可能會導致UNIQUE KEY約束失敗。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM