2012-03-21 5 views
0

Я проверил ответы на эту тему, но я до сих пор не знаю, почему это не работает! ПОЖАЛУЙСТА ПОМОГИ!C# Databound Listbox Обновить

private void btnAdd_Click(object sender, EventArgs e) 
    { 
     SqlCeCommand insTitle = new SqlCeCommand("Insert into Titles(Title) values('" + txtAddTitle.Text +"')"); 
     insTitle.Connection = dbConnection; 

     try 
     { 
      if (dbConnection.State == ConnectionState.Closed) { dbConnection.Open(); } 
      insTitle.ExecuteNonQuery(); 


      this.hRDataSet.AcceptChanges(); 
      this.titlesTableAdapter.Update(this.hRDataSet); 
      this.tableAdapterManager.UpdateAll(this.hRDataSet); 

      lstTitles.BeginUpdate(); 
      lstTitles.DataSource = titlesBindingSource; 
      lstTitles.DisplayMember = "Title"; 
      lstTitles.ValueMember = "Title_ID"; 
      lstTitles.EndUpdate(); 
     } 
     catch (Exception insErr) 
     { 
      MessageBox.Show(insErr.Message); 
     } 
    } 

ListBox «lstTitles» не обновляется и не показывает добавленные элементы, несмотря на то, что они находятся в базе данных!

+0

Вы действительно знаете, какой код вы писали? Это выглядит подозрительно, как [грузовое культовое программирование] (http://en.wikipedia.org/wiki/Cargo_cult_programming) ... –

+0

Я пробовал так много разных способов кодирования ... для меня это теперь все gibraish. Можете ли вы помочь после «executononquery»? – user799920

ответ

0

Метод UpdateDataAdapter используется для обновления базы данных с изменениями, внесенными в DataSet. Вам нужно сделать обратное: вам нужно обновить DataSet с измененными данными из базы данных, поэтому вы должны использовать Fill, а не Update.

В любом случае, ваш подход не является оптимальным; поскольку вы работаете с наборами данных, вы должны добавить новое значение в соответствующую таблицу в DataSet, а затем обновить базу данных с помощью метода Update. ListBox автоматически подберет изменения.

private void btnAdd_Click(object sender, EventArgs e) 
{ 
    try 
    { 
     // Add a row to the DataTable 
     DataRow row = hRDataSet.Titles.NewRow(); 
     row["Title"] = txtAddTitle.Text; 
     hRDataSet.Titles.Rows.Add(row); 

     // Update the database 
     this.titlesTableAdapter.Update(this.hRDataSet); 

     // That's it, you're done ;) 
    } 
    catch (Exception insErr) 
    { 
     MessageBox.Show(insErr.Message); 
    } 
} 
+0

Спасибо за объяснение, что ... единственная причина, по которой я пошел по этой дороге, - это то, что мой .sdf не обновляется новыми записями, если я сначала обновляю набор данных ... по крайней мере, когда я не нажимаю «показать данные таблицы» в серверный проводник! – user799920

+0

, и это потому, что я запускал его в режиме отладки! DUHHH! – user799920

+0

@ user799920, просто измените свойство «Скопировать в выходной каталог» вашего файла sdf. –

 Смежные вопросы

  • Нет связанных вопросов^_^