Cześć wszystkim,
Mam kontrolkę DatagridView1 do której pobierane są dane z bazy danych SQL. Kontrolka zawiera 4 kolumny i nieokreśloną liczbę wierszy, następnie tworzę przy użyciu pętli "for" kolumny w datagridView2 identyczne jak w datagridView1. Zaznaczając myszką wiersz w kontrolce DataGridView1 za pomocą przycisku przenoszę go do kontrolki DataGridView2. I teraz mam problem... dodałem kolejny przycisk który powinien zaznaczony wiersz przenieść do góry jednak tak się nie dzieje i wywala wyjątek "System.ArgumentOutodRangeException"Index was out of range...". Co ciekawe w kontrolce gridview1 przesuwanie wierszy działa. proszę o pomoc...
namespace prg
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//Przycisk pobierz
public void button1_Click(object sender, EventArgs e)
{
string danepolaczenia;
SqlConnection polaczeniezbaza;
danepolaczenia = @"dane:)";
polaczeniezbaza = new SqlConnection(danepolaczenia);
polaczeniezbaza.Open();
SqlCommand komenda;
String sql;
sql = @"SELECT....";
komenda = new SqlCommand(sql, polaczeniezbaza);
SqlDataAdapter da = new SqlDataAdapter(komenda);
DataTable dt = new DataTable();
da.Fill(dt);
dataGridView1.DataSource = dt;
komenda.Dispose();
polaczeniezbaza.Close();
for (int i = 0; i < dataGridView1.Columns.Count; i++)
{
dataGridView2.Columns.Add(dataGridView1.Columns[i].Name, dataGridView1.Columns[i].HeaderText);
}
}
//Przycisk przenies
private void button2_Click(object sender, EventArgs e)
{
foreach (DataGridViewRow row in dataGridView1.SelectedRows)
{
dataGridView2.Rows.Add(row.Cells[0].Value.ToString(), row.Cells[1].Value.ToString(), row.Cells[2].Value.ToString(), row.Cells[3].Value.ToString());
}
}
//Przycisk do góry
public void button3_Click(object sender, EventArgs e)
{
DataTable dt2 = new DataTable();
dataGridView2.DataSource = dt2;
int wierszIndeks = dataGridView2.SelectedCells[0].OwningRow.Index;
if (wierszIndeks == 0)
return;
var tabela = (DataTable)dataGridView2.DataSource;
DataRow nowyWiersz = tabela.NewRow();
nowyWiersz.ItemArray = tabela.Rows[wierszIndeks].ItemArray;
tabela.Rows.RemoveAt(wierszIndeks);
tabela.Rows.InsertAt(nowyWiersz, wierszIndeks - 1);
dataGridView2.ClearSelection();
dataGridView2.Rows[wierszIndeks - 1].Selected = true;
}
}
}