2011-03-07 54 views
1

更新GridView的我有一个GridView“GridViewMcm”与dropdownlists而在接下来的两列第一和第二列和文本框进行编辑。PairId是表的主键。问题而在ASP.NET

以下是对于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 [email protected]", 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,但取一些默认值。由于它们提取的默认值已经作为特定行中的组合存在于表中,所以它会抛出错误。上面的代码部分是否有任何错误?

+0

建议一:“ne1能帮我解决吗?”不是英语。如果你想被认真对待,不要使用那种语言。 – 2011-03-08 01:11:51

+0

好的。感谢您的通知。这类帮助网站的新用户。 – xyzwwq 2011-03-08 06:33:07

回答

0

检查您正试图在受影响的表中插入/更新的数据。验证您尝试插入/更新的数据是否已经存在于可能导致UNIQUE KEY约束失败的表中。

1

检查U_mcmtable约束我的猜测是约束条件是为from和to字段设置的,而且你试图更新到已经在表格中的转换组合。

+0

感谢您的帮助。问题在于drdList1和drdList2没有使用SelectedValue填充,而是填充了一些Default值。我的代码中有错误吗?你能帮助我吗? – xyzwwq 2011-03-08 06:45:04

0

这个错误表示您要插入的列名重复的值[名称] 的唯一约束已设置该列这就意味着该列中的值 应该是唯一的

你可以得到您的mcmtable表上的所有约束列表由

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