2015-07-28 4 views
0

У меня есть раскрывающийся список категорий, которые являются привязкой к базе данных. Выбор из этого поля заполняет gridview. Когда я удаляю категорию, она успешно обновляет мой gridview продуктов (показывая никаких записей), но не выпадающий список категорий, пока я не заново запустил программу.Выпадающий список не обновляется при изменении данных

Моя страница загрузки:

protected void Page_Load(object sender, EventArgs e) 
    { 
     // Check if loaded for first time. 
     if (!IsPostBack) 
     { 
      // Bind the data displayed in the Dropdownlists. 
      Login.SelectAllCat(DropListCat); 

     } 
    } 

Мой код для удаления категории:

protected void BtnDeleteCat_Click(object sender, EventArgs e) 
    { 
     try 
     { 
      // Get int id from selectioin in drop down list. 
      int id = Convert.ToInt32(DropListCat.SelectedValue.ToString()); 
      // Call method to open data base, create command from stored procedure and delete item to database. 
      Login.DeleteCategory(id); 
      // Update the data displayed in the Dropdownlists. 
      Login.SelectAllCat(DropListCat); 


     } 
     catch (NullReferenceException) 
     { 
      LblProdId.Text = "No Category Selected!"; 
     } 
    } 

Мой DropDownList:

<asp:DropDownList ID="DropListCat" runat="server" BackColor="#66FFFF" 
      Width="200px" AutoPostBack="True" AppendDataBoundItems="True"> 
</asp:DropDownList> 

соединением и код привязки. В Login class.

// Method to select all categories and display them in dropdown lists. 
public static void SelectAllCat(DropDownList list) 
{ 
    // SqlConnection. 
    SqlConnection con = new SqlConnection(conString); 
    // Create new command and parameterise. 
    SqlCommand cmd = new SqlCommand(); 
    cmd.CommandType = CommandType.StoredProcedure; 
    cmd.CommandText = "SelectAllCat"; 
    // 
    // Adapted from 
    // Source link: http://www.c-sharpcorner.com/UploadFile/abhikumarvatsa/data-binding-to-dropdownlist-and-listbox-in-Asp-Net/ 
    // 
    cmd.Connection = con; 
    try 
    { 
     // Open connection and bind data to GUI. 
     con.Open(); 

     list.DataSource = cmd.ExecuteReader(); 
     list.DataTextField = "CatName"; 
     list.DataValueField = "CatID"; 
     list.DataBind(); 

    } 
    catch (Exception ex) 
    { 
     throw ex; 
    } 
    finally 
    { 
     con.Close(); 
     con.Dispose(); 
    } 
} 

Моя хранимая процедура:

CREATE PROCEDURE SelectAllProd 
AS 
    SELECT * FROM Prod; 
GO 

Это результат после того, как я попытался удалить категорию.
Когда я повторно запускаю проект, категория будет удалена.
enter image description here

Редактировать

На самом деле, это удаление категории, но это сохранение исходных данных связывания от загрузки страницы. Поэтому, я думаю, мне нужно решить, как стереть это.

ответ

0

Я установил ее, очистив выпадающий список элементов перед повторным связывания данных, как это:

// Method to select all categories and display them in dropdown lists. 
    public static void SelectAllCat(DropDownList list) 
    { 
     // Clear any previously bound items. 
     list.Items.Clear(); 
     // etc.../ 
Смежные вопросы