Проблема при обновлении gridview в ASP.NET - PullRequest
1 голос
/ 07 марта 2011

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

Ответы [ 3 ]

1 голос
/ 07 марта 2011

Проверьте ограничение U_mcmtable в базе данных. Я предполагаю, что ограничение установлено для полей from и to, и вы пытаетесь обновить комбинацию преобразования, которая уже есть в таблице.

0 голосов
/ 08 марта 2011

Проверьте данные, которые вы пытаетесь вставить / обновить в соответствующих таблицах.Убедитесь, что данные, которые вы пытаетесь вставить / обновить, еще не существуют в таблице, что может привести к сбою ограничения UNIQUE KEY.

0 голосов
/ 08 марта 2011

Эта ошибка означает, что вы пытаетесь вставить повторяющееся значение в имя столбца. [Имя] В этом столбце установлена ​​уникальная зависимость. Это означает, что значения в этом столбце должны быть уникальными

. Вы можете получитьсписок всех ограничений в вашей таблице mcmtable по

SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
where Table_Name='mcmtable'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...