【问题标题】:Problem while updating the gridview in ASP.NET在 ASP.NET 中更新 gridview 时出现问题
【发布时间】:2011-03-07 12:32:03
【问题描述】:

我有一个带有下拉列表的 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”无法获取下拉列表中的选定值,而是获取一些默认值。并且由于它们正在获取的默认值已经作为特定行中的组合存在于表中,因此会引发错误。上面的代码部分有错误吗??

【问题讨论】:

  • 建议一:“ne1能帮我解决dis吗?”不是英语。如果你想被认真对待,就不要使用那种语言。
  • 好的。谢谢告知。这类帮助网站的新手。

标签: c# .net asp.net gridview


【解决方案1】:

检查数据库中的 U_mcmtable 约束。我的猜测是,为 from 和 to 字段设置了约束,并且您正在尝试更新为表中已经存在的转换组合。

【讨论】:

  • 感谢您的帮助。问题是 drdList1 和 drdList2 没有填充 SelectedValue 而是填充了一些默认值。我的代码有错误吗?你也可以帮我解决这个问题吗?
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    该错误表示您正在尝试在列名称 [名称] 中插入重复值 已在该列上设置了唯一约束,这意味着该列中的值 应该是独一无二的

    您可以通过

    获取 mcmtable 表上所有约束的列表
    SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
    where Table_Name='mcmtable'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-27
      • 1970-01-01
      • 1970-01-01
      • 2019-07-04
      • 2019-01-13
      • 1970-01-01
      • 2011-01-09
      相关资源
      最近更新 更多