Строки не вставляются в окнах данных. - PullRequest
0 голосов
/ 22 ноября 2011

Я хочу вставить сетку данных с помощью datatable и определить столбцы сетки в программе.Пожалуйста, помогите мне, что не так с этим кодом?Возникла следующая ошибка: «Невозможно привести объект типа System.String к типу System.String []»

 enter code here 
SqlConnection connection;
    string query;
    SqlCommand cmd;
    SqlDataAdapter da;
    DataSet ds;
    DataRow dRows;
    public void ViewGrid()
    {
    connection = new SqlConnection(ConnString);
        try
        {
            connection.Open();
            query = @"SELECT * FROM TBLWorkers";
            //cmd = new SqlCommand(query, connection);
            da = new SqlDataAdapter(query, connection);
            ds = new DataSet();
            da.Fill(ds, "Workers");

            int MaxRows = ds.Tables["Workers"].Rows.Count;

            label1.Text = MaxRows.ToString();

            dRows = ds.Tables["Workers"].Rows[0];


            // Create an unbound DataGridView by declaring a column count.
            dataGridView1.ColumnCount = 4;
            dataGridView1.ColumnHeadersVisible = true;

            // Set the column header names.
            dataGridView1.Columns[0].Name = "Recipe";
            dataGridView1.Columns[1].Name = "Category";
            dataGridView1.Columns[2].Name = "Main Ingredients";
            dataGridView1.Columns[3].Name = "Rating";

            object[] rows1 = new object[] { dRows[0].ToString(), dRows[1], dRows[2], dRows[3] };
            foreach (string[] rowArray in rows1)
            {
                dataGridView1.Rows.Add(rowArray);
            }

        }
        catch (Exception x)
        {
            MessageBox.Show(x.Message);
            connection.Close();
        }

    }

Ответы [ 2 ]

0 голосов
/ 22 ноября 2011

Вы перебираете object[] и обрабатываете элементы в этом массиве как string[], а элемент 0 этого массива определенно равен string, а не string[].

Я думаю что вы намерены сделать, основываясь на том, что вы написали, это вставить одну строку в DataGridView, потому что это все, что удерживает dRows - это одна строка таблицы.Ваш код частично взят из примера MSDN здесь , и если вы посмотрите, как работает этот пример, вы увидите, что они собирают группу string[] для добавления unbound строки в DataGridView.

Это то, что вы хотите сделать здесь?Добавить несвязанную строку?У вас уже есть DataTable.Вы можете просто использовать привязку данных для решения этой проблемы, а не извлекать данные из БД, а затем скопировать их в object[], просто чтобы развернуть и поместить в несвязанный DataGridView.

Вы можете просто сделать это:

string[] myRow = new string[] { dRows[0].ToString(), dRows[1].ToString(), dRows[2].ToString(), dRows[3].ToString() };
dataGridView1.Rows.Add(myRow);

и я думаю, что это сработает.Не проверял, но я думаю, что это сделает.Но я бы, вероятно, установил привязку данных, если бы делал это.

0 голосов
/ 22 ноября 2011

Я бы сказал, что rowArray - это строка, а не строка [].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...