Добавить пустую строку над строкой заголовка в datatable - PullRequest
0 голосов
/ 29 января 2019

Я следовал за этим Добавление новой строки в начало таблицы данных , чтобы добавить пустую строку, но даже если мой индекс равен 0, он все равно не будет добавлять пустую строку над заголовком в моей таблице данных.

Я попробовал это

DataRow blankRow = dt.NewRow ();dt.Rows.InsertAt (blankRow, 0);

Это мой код

public void filldatagridview(ExcelWorksheet workSheet)
        {
            DataTable dt = new DataTable();

            //Create the data column
            for (int col = workSheet.Dimension.Start.Column; col <= workSheet.Dimension.End.Column; col++)
            {
                dt.Columns.Add(col.ToString());
            }

           for (int row = 12; row <= 26; row++)
            {
                DataRow newRow = dt.NewRow(); //Create a row
                int i = 0;
                for (int col = workSheet.Dimension.Start.Column; col <= workSheet.Dimension.End.Column; col++)
                {
                    newRow[i++] = workSheet.Cells[row, col].Text;
                }
                dt.Rows.Add(newRow);
            }

            dt.Columns.RemoveAt(0); //remove No 
            dt.Columns.RemoveAt(0); //remove article

            //Get BookCode 
            using (SqlConnection conn = new SqlConnection("Server con.."))
            using (SqlCommand cmd = new SqlCommand(null, conn))
            {
                StringBuilder sb = new StringBuilder("SELECT InvtID AS BOOKCODE FROM InventoryCustomer WHERE Barcode In (");

                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    if (i != 0) sb.Append(",");

                    string name = "@P" + i;
                    cmd.Parameters.AddWithValue(name, dt.Rows[i]["3"]);
                    sb.Append(name);
                }
                sb.Append(")");

                cmd.CommandText = sb.ToString();

                SqlDataAdapter da = new SqlDataAdapter(cmd);
                da.Fill(dt);

                dt.DefaultView.Sort = "BOOKCODE";
                dt = dt.DefaultView.ToTable();

                dt.Columns["BOOKCODE"].SetOrdinal(0);

                dataGridView2.DataSource = dt;
            }
}

 private void dataGridView2_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
        }

1 Ответ

0 голосов
/ 29 января 2019

Вы можете попробовать это.Поскольку DataTable пуст, добавление строки автоматически добавляет его с 0-м индексом:

DataRow row = dt.NewRow();
dt.Rows.Add(row);

Или вы можете сделать это:

DataRow blankRow = dt.NewRow(); 

for (int temp = 0; temp < 10; temp++)  // here 10 is number of columns
{
    blankRow[temp] = "";  // use appropriate data type,
}
dt.Rows.InsertAt(blankRow, 0);

Обновление:

Событие DataBound перед добавлением источника данных:

GridViewRow headerRow = new GridViewRow(0, 0, DataControlRowType.Header, DataControlRowState.Normal);

TableHeaderCell headerCell = new TableHeaderCell();
headerCell.Text = "headercol1”;
headerCell.ColumnSpan = 2;
headerRow.Controls.Add(headerCell);

headerCell = new TableHeaderCell();
headerCell.ColumnSpan = 2;
headerCell.Text = "headercol2”;
headerRow.Controls.Add(headerCell);
dataGridView2.HeaderRow.Parent.Controls.AddAt(0, headerRow); 

Предполагается, что у вас есть сетка с 4 столбцами.Я дал 2 colspace для headercol1 и 2 colspace для headercol2

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