2010-09-16 7 views
0

J'ai un ensemble de données, et 2 datatables.Comment enregistrer une valeur de grille de données modifiée dans une base de données?

Datatable1 = source Combobox (Ceci affichera une liste d'options) Datatable2 = DataGrid (Ceci affichera les données pertinentes pour les options zone de liste déroulante) bouton Soumettre (remplir DataGrid en fonction de zone de liste déroulante valeur sélectionnée)

Lorsque je sélectionne un élément dans une zone de liste déroulante et que je clique sur submit, il charge les enregistrements pertinents dans DataGrid. Si je change ensuite une valeur dans la grille de données et clique sur le bouton soumettre, la valeur que je viens de changer disparaît?

Comment puis-je faire en sorte que toutes les valeurs de données modifiées modifient le datable, de sorte que même si je vois différentes options, je peux toujours retourner un, conserver toutes les valeurs modifiées?

Voici mon code:

//Load the data grid according to the ComboCAtegory selection 
    public void Grid_Load() 
    { 

     DataSet(); 
     var Result = from c in DataSet_Main.Tables[2].AsEnumerable() 
        where c.Field<string>("Test_Code").Equals(comboBox_CategorySelect.SelectedValue) 
        select c; 

     dataGridView_Main.DataSource = Result.AsDataView(); 

     dataGridView_Main.Columns["Test_Code"].Visible = false; 
     dataGridView_Main.Columns["ID"].Visible = false; 
     dataGridView_Main.Columns["Description"].Visible = false; 
     dataGridView_Main.Columns["Expected_Result"].Visible = false; 


    } 

    private void buttonSubmit_Click(object sender, EventArgs e) 
    { 
     Grid_Load(); 
    } 

    public void Fail() 
    { 

     DataTable dt = DataSet_Main.Tables[2]; 

     //dataGridView_Main.SelectedRows[0].Cells["Check"].Value = "Fail"; 
     dt.Rows[dataGridView_Main.SelectedRows[0].Index]["Check"] = "Fail"; 

    } 



    private void buttonFail_Click(object sender, EventArgs e) 
    { 
     Fail(); 
    } 

Hope this sens?

+0

Vous pouvez ajouter des balises à quel cadre visuel que vous utilisez. Windows Forms, WPF, siverlight etc. – Val

Répondre

0

Je pense que votre DataGrid est déjà lié à la table de données. Ce que vous devez faire est d'envoyer les modifications à la source de données afin qu'elles soient reflétées dans la deuxième table de données qui est liée à la même source de données. Pour ce faire, écrivez un gestionnaire d'événements pour l'événement CellChanging sur le DataGrid et en ce que vous pouvez appeler la méthode Update() sur votre adaptateur de données (si vous en utilisez un, c'est-à-dire) pour envoyer des modifications à la source de données. Ensuite, dans le même gestionnaire d'événements, mettez à jour les éléments de la zone de liste déroulante en actualisant la liaison de données afin que la zone de liste déroulante obtienne les dernières valeurs de la deuxième table de données. De cette façon, chaque fois que la cellule change sa valeur dans le DataGrid, vous pouvez vérifier si c'est la cellule que vous souhaitez et mettre à jour la liste déroulante en fonction des changements dans la grille de données.

0

Excuses ma mauvaise..je suis une tête boof.

La grille de données EST liée automatiquement. Je viens de réaliser que j'appelais ma méthode dataset() initiale - qui appelle ma base de données, dans ma méthode dataagrid_load. Ainsi, à chaque fois que je remplissais la grille de données, elle rafraîchissait la base de données et non le datatable.

votre Thankyou tho repy ..

Questions connexes