У меня есть сетка с флажком, и я пытаюсь выполнить множественное удаление, используя этот код:
protected void deleteUsers(object sender, EventArgs e) //deleting the selected users
{
foreach (GridViewRow row in clientGrid.Rows)
{
CheckBox selectBox = (CheckBox)row.FindControl("deleteUser");
if (selectBox != null && selectBox.Checked)
{
string bank, customerId, tMain, tSub;
bank = bankName.InnerText;
tMain = bank + "_main";
tSub = bank + "_sub";
customerId = Convert.ToString(clientGrid.DataKeys[row.RowIndex].Value);
deleteSelected(tMain, tSub, customerId).ExecuteNonQuery();
clientGrid.DataSource = getAllClients();
clientGrid.DataBind();
}
}
}
, а вот sqlCommand:
protected SqlCommand deleteSelected (string Tmain, string Tsub, string customerId) //the sql command for deleting
{
string connection, commandSyntax;
connection = ConfigurationManager.ConnectionStrings["localsqlserver"].ConnectionString;
commandSyntax = "DELETE FROM [" + Tmain + "] FROM [" + Tsub + "] t1 " +
"LEFT JOIN [" + Tmain + "] t2 ON t1.customer_id = t2.customer_id " +
"WHERE t1.customer_id = @customer_id" ;
SqlConnection conn = new SqlConnection(connection);
SqlCommand cmd = new SqlCommand(commandSyntax, conn);
cmd.Parameters.AddWithValue("@customer_id", customerId);
conn.Open();
return cmd;
}
это прекрасно работает при удалении только одного проверенного пользователя, но , если я проверяю более одного, я получаю эту ошибку:
Индекс был вне диапазона.Должен быть неотрицательным и меньше размера коллекции.
Имя параметра: индекс
Я установил ключ данных gridview для столбца customer_id, который содержит guid.
Я использую asp.net 4.0, в чем проблема?