Я заполнил свой DataGridView
с именем DataSourceGrid
, используя следующий код внутри FormLoad
String mquery = "SELECT ProductName,UnitPrice,CategoryName FROM ProductsTable INNER JOIN CategoryTable ON ProductsTable.Categoryid = CategoryTable.Categoryid";
using (SqlConnection con = new SqlConnection(conString))
{
SqlDataAdapter sda = new SqlDataAdapter(mquery, con);
con.Open();
DataTable dt = new DataTable();
sda.Fill(dt);
DataSourceGrid.DataSource = dt;
}
Я использовал следующий код для выбора строк DataGridView
внутри SelectionChanged
блока событий
int curRow = -1;
int curColumn = -1;
curRow = DataSourceGrid.CurrentRow.Index;
curColumn = DataSourceGrid.CurrentCell.ColumnIndex;
string firstCellValue = DataSourceGrid.SelectedRows[curRow].Cells[curColumn].Value.ToString();
if (DataSourceGrid.CurrentRow.Index >= -1)
{
using (SqlConnection con = new SqlConnection(conString))
{
String query = "SELECT ProductName,UnitPrice,CategoryName FROM ProductsTable INNER JOIN CategoryTable ON ProductsTable.Categoryid = CategoryTable.Categoryid WHERE ProductName='" + firstCellValue + "'";
con.Open();
SqlDataReader sdr = new SqlCommand(query, con).ExecuteReader();
sdr.Read();
ProductNameText.Text = sdr.GetValue(0).ToString();
UnitPriceText.Text = sdr.GetValue(1).ToString();
CategoryText.Text = sdr.GetValue(2).ToString();
}
, когда я нажимаю на строку, данные будут отображаться в соответствующих текстовых полях. Моя проблема в том, что когда FormLoad
выдается исключение, говорящее Index was out of range...
Вот Точное Исключение спасибо за вашу поддержку.