Ajouter une nouvelle Ligne à DataTable

J'ai un DataGrid se lier à une base de données avec une Table et une Colonne (FooTable et FooName).
Avec mon code, je peux lier DataGrid à DataTable et afficher les données de base de données. Mais quand à chaque fois que j'ajoute une nouvelle ligne par DataSet_Add_Click(), rien n'est ajouté à la DataGrid. Je si j'ai bind DataTable à DataGrid par ItemsSource, mais l'ajout de la nouvelle ligne à DataTable ne pas ajouter de ligne de grille de données. Pourquoi?

public partial class MainWindow : Window
{
SqlCeConnection conn = new SqlCeConnection();
/* Define the Connection String */
string connString;
DataGrid dg1 = new DataGrid();
DataTable dt = new DataTable();
public MainWindow()
{
InitializeComponent();
connString = @"...";
SqlCeConnection conn = new SqlCeConnection(connString);
conn.Open();
SqlCeDataAdapter da = new SqlCeDataAdapter();
string sqlStr = @"SELECT * FROM FooTable";
da.SelectCommand = new SqlCeCommand(sqlStr, conn);
DataSet ds = new DataSet();
da.Fill(ds, "FooTable");
dt = ds.Tables["FooTable"];
dg1.ItemsSource = ds.Tables;
DataRow newRow = dt.NewRow();
newRow["FooName"] = "Mary";
dt.Rows.Add(newRow);
CreateDataGrid();
}
public struct DataItem1
{
public string FooName { get; set; }
}
private void CreateDataGrid()
{
DataGridTextColumn col = new DataGridTextColumn();
col = new DataGridTextColumn();
col.Binding = new Binding("FooName");
col.Header = "FooName";
dg1.Columns.Add(col);
/* dataGrid1 exist in XAML and is a parent of the DataGrid */
dataGrid1.Children.Add(dg1);
}
private void DataSet_Add_Click(object sender, RoutedEventArgs e)
{
DataRow newRow2 = dt.NewRow();
newRow2["FooName"] = "Mary";
dt.Rows.Add(newRow2);
}
}
  • qu'est-ce que SqlCeConnection conn faire dans votre DataSet_Add_Click méthode, et pourquoi SqlCeException d'être pris?
  • Êtes-vous en ajoutant la dataTable retour à la ItemsSource après avoir ajouté les nouvelles lignes?
  • Essayez peut-être de liaison de votre DataTable directement comme le ItemsSource au lieu de l'ensemble de données. La façon dont vous avez, il est la bonne façon d'ajouter des lignes à une Table. La question semble faire quelque chose avec la source de données de liaison.
  • Je crois que vous devriez vous abonner pour la dt.TableNewRow et affecter la source de nouveau;
  • Re-poser la même question n'est pas un comportement acceptable ici. Si vous voulez attirer l'attention à votre question, vous serez autorisé à placer une prime sur elle après deux jours. Vous pouvez aussi modifier votre question pour ajouter des informations supplémentaires, ce qui peut rendre votre question plus facile de comprendre et de répondre.
InformationsquelleAutor KMC | 2011-04-28