2016-04-22 3 views
-1

Я хочу реализовать кнопку на веб-странице, которая удаляет все данные, которые были показаны в gridview. Есть ли более простой способ удалить все данные сразу с помощью кнопки?Удалить все данные из gridview

+0

Не то, чтобы это имело значение с объемом кода, который вы отправили, но VS2015 - это «IDE», а не версия «Framework». –

+0

Я удалил тег Visual Studio 2015, поскольку этот вопрос связан с кодированием, а не специфичен для VS. –

+0

Нам нужен ваш код. Как мы узнаем, есть ли более простой способ сделать что-либо, если вы не отправляете код, чтобы сравнить его? – Matthew

ответ

1

Это очень просто. Просто перебирайте каждую строку в gridview и получите значение первичного ключа, а затем используйте sql-запрос для удаления записи из базы данных. Код здесь может вам помочь. Я использую базу данных образцов NorthWind.

void loaddata() 
    { 
     SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["TestDatabaseConnectionString"].ConnectionString); 
     SqlCommand command = new SqlCommand(); 
     connection.Open(); 
     try 
     { 
      command = connection.CreateCommand(); 
      command.CommandText = "SELECT * FROM Employees"; 
      SqlDataAdapter adapter = new SqlDataAdapter(command); 
      DataTable datatable = new DataTable(); 
      adapter.Fill(datatable); 
      GridView1.DataSource = datatable; 
     } 
     catch (Exception) 
     { 
      throw; 
     } 
     finally 
     { 
      if (connection.State == ConnectionState.Open) 
      { 
       connection.Close(); 
      } 
     } 
    } 

    protected void Button1_Click(object sender, EventArgs e) 
    { 
     int employee_id; 

     SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["TestDatabaseConnectionString"].ConnectionString); 
     SqlCommand command = new SqlCommand(); 
     connection.Open(); 
     try 
     { 
      command = connection.CreateCommand(); 
      for (int i = 0; i < GridView1.Rows.Count; i++) 
      { 
       employee_id = Convert.ToInt32(GridView1.Rows[i].Cells[0].Text); 
       command.CommandText = "DELETE FROM Employees WHERE EmployeeID = '" + employee_id + "'"; 
       command.ExecuteNonQuery(); 
      } 
     } 
     catch (Exception) 
     { 
      throw; 
     } 
     finally 
     { 
      if (connection.State == ConnectionState.Open) 
      { 
       connection.Close(); 
      } 
     } 

     loaddata(); 
    } 
0

Вы всегда можете просто установить для DataSource значение null.

someGridView.DataSource = null; 
someGridView.DataBind(); 
+0

Я хочу удалить его при нажатии кнопки ... и данные также должны быть удалены из базы данных, которая является серверной базой данных. – Som

+0

@Som - также удаление данных в бэкэнде - это совсем другой вопрос, который вы задали ... –

0

Я могу быть только расплывчатым, как вопрос, и я до сих пор не совсем понимаю, почему я не могу оставить комментарии, но я могу оставить ответ ...

Во всяком случае, мы не» t знать, что вы используете для доступа к своей базе данных или модели, поддерживающей GridView.

Скажем, например, у вас есть следующий класс бэк ваш GridView (тип данных, ваш GridView состоит, что вы установили Datasource к):

public class MyData 
{ 
    public int ID { get; set; } 
    public string SomeData { get; set; } 
} 

В вашем ASPX вы бы иметь следующее:

<asp:GridView ID="GridView" runat="server"></asp:GridView> 
<asp:Button ID="DeleteButton" runat="server" OnClick="DeleteButton_Click"/> 

, а затем в коде-позади, вы могли бы сделать что-то вроде этого ...

protected void DeleteButton_Click(object sender, EventArgs e) 
{ 
    var gridViewItemsToDelete = (IEnumerable<MyData>)GridView.DataSource; 

    foreach (var idToDelete in gridViewItemsToDelete.Select(r=>r.ID)) 
    { 
     // Delete the item by its ID 
     // I don't know what you're using to access your database 
    } 

    // Save Changes if you didn't in the foreach loop... 
} 
Смежные вопросы