Witam,
Mam aplikację, w której do dataGridView wczytywane są wyselekcjonowane wiersze (na podstawie daty wybranej w monthCalendar) z Tabeli bazy MS SQL. Pola tabeli to ID int z autoinkrementacją, Data Datetime, Zadania varchar/string i Pliki varchar/string.
Pola są zdefiniowane także w dataGridView.
Odpowiednie rekordy wczytują się. Za pomocą formularza działa zapis nowych danych do bazy i odświeżanie wyświetlania. Jednak mam problem z zapisem przez formularz nowych wierszy do dGV kolejnych po wyświetlanych z bazy bez zapisu do bazy. Datatable lub dataGridView1.Rows.Add gryzie się z tym zapisem do bazy ponieważ według komunikatu dane są powiązane ze źródłem.
Oto kod:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace kalendarz
{
public partial class Form1 : Form
{
DataClasses1DataContext dc = new DataClasses1DataContext();
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
odswiezGridView();
// TODO: This line of code loads data into the 'kalendarzDataSet.Zadania' table. You can move, or remove it, as needed.
this.zadaniaTableAdapter.Fill(this.kalendarzDataSet.Zadania);
}
private void monthCalendar1_DateChanged(object sender, DateRangeEventArgs e)
{
odswiezGridView();
}
private void button1_Click(object sender, EventArgs e)
{
//var dc = dataGridView1.Rows.Add(monthCalendar1.SelectionRange.Start, textBox3.Text, textBox4.Text);
}
private void button2_Click(object sender, EventArgs e)
{
Zadania zad = new Zadania();
zad.Data = monthCalendar1.SelectionRange.Start;
zad.Zadanie = textBox3.Text;
zad.Pliki = textBox4.Text;
dc.Zadanias.InsertOnSubmit(zad); // Add the new object to the Orders collection.
dc.SubmitChanges(); // zapisuje do bazy
odswiezGridView(); // wyświetla uaktualnione dane
}
private void odswiezGridView() // pobiera wiersze według daty
{
var query = from c in dc.Zadanias
where c.Data == monthCalendar1.SelectionRange.Start
select c;
dataGridView1.DataSource = query;
}
}
}