Witam,
Potrzebuję pomocy aby po kliknięciu na przycisk pobierało dane zaznaczonego wiersza w datagridview do odpowiednich pol (textboxów) i umożliwienie w nich zmiany zawartości, natomiast po wciśnięciu przycisku zapisz nastąpiło zapisanie zmienionych danych do odpowiedniego pola w datagridview oraz po wyjściu z formularza export danych do pliku excela z którego na wstępie pobiera te dane.
Chyba, że macie inne pomysły na rozwiązanie tego problemu.
Kod datagridview:
private void FormStart_Load(object sender, EventArgs e)
{ //wczytywanie danych z bazy excela
groupBox1.Visible = false;
object misValue = System.Reflection.Missing.Value;
Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.Application();
//Microsoft.Office.Interop.Excel.Workbook workbook = app.Workbooks.Open(@"T:\kitek\Baza.xlsx",ReadOnly:true);
Microsoft.Office.Interop.Excel.Workbook workbook = app.Workbooks.Open(@"C:\Users\Wojtek\Desktop\kitek09-02-2015\Baza.xlsx", ReadOnly: true);
Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets["Profil"];
int rcount = worksheet.UsedRange.Rows.Count;
int rCols = worksheet.UsedRange.Columns.Count;
for (int j = 0; j < rCols; j++)
{
dataGridView1.Columns.Add(j.ToString(), (worksheet.Cells[1, j + 1] as Microsoft.Office.Interop.Excel.Range).Value.ToString());
}
for (int i = 1; i < rcount; i++)
{
int rowId = dataGridView1.Rows.Add();
for (int j = 0; j < rCols; j++)
{
dataGridView1.Rows[rowId].Cells[j].Value = (worksheet.Cells[i + 1, j + 1] as Microsoft.Office.Interop.Excel.Range).Value;
}
}
workbook.Close(false,misValue,misValue);
app.Quit();
releaseObject(worksheet);
releaseObject(workbook);
releaseObject(app);
}
private void releaseObject(object obj)
{
try
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
obj = null;
}
catch (Exception ex)
{
obj = null;
MessageBox.Show("Unable to release the Object " + ex.ToString());
}
finally
{
GC.Collect();
}
}
kod przycisku pobierz:
private void buttonPobierz_Click(object sender, EventArgs e) //pobierz dane do modyfikacji (problrm gdy jest puste pole)
{
int numer = dataGridView1.CurrentRow.Index;
string zmienna1 = dataGridView1.Rows[numer].Cells[1].Value.ToString();
textBoxPN.Text = (zmienna1);
string zmienna2 = dataGridView1.Rows[numer].Cells[2].Value.ToString();
textBoxProfil.Text = (zmienna2);
string zmienna3 = dataGridView1.Rows[numer].Cells[3].Value.ToString();
comboBoxTyp.Text = (zmienna3);
string zmienna4 = dataGridView1.Rows[numer].Cells[4].Value.ToString();
textBoxInfo.Text = (zmienna4);
string zmienna5 = dataGridView1.Rows[numer].Cells[5].Value.ToString();
textBoxWersja.Text = (zmienna5);