У меня есть 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» не могут извлечь выбранное значение из выпадающего списка, но извлекают некоторое значение по умолчанию. И поскольку значения по умолчанию, которые они выбирают, уже присутствуют в таблице как комбинация в определенной строке, это вызывает ошибку. Есть ли какая-либо ошибка в приведенной выше части кода ??