Данные столбца с Sql Server не позиционируются как совпадающие со столбцом в Datatable - PullRequest
0 голосов
/ 28 января 2019

Данные в InvtID уже совпадают со столбцом «3» после того, как я импортирую файл Excel, но проблема в том, как показано на фотографии, почему столбец данных (InvtID) заполняется данными после последней строки данных?Как я могу исправить положение, чтобы соответствовать «3» столбца.Я уже позиционирую столбец InvtID на 0. Есть ли какой-либо однострочный код для начала позиционирования строки на 1 ?:

program

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 
    var barCodes = dt.AsEnumerable().Select(r => r.Field<string>("3"))
        .ToArray(); //EAN column
    var barCodesstring = string.Format("'{0}'", string.Join("','", barCodes));
    SqlCommand cmd = new SqlCommand("SELECT InvtID FROM InventoryCustomer WHERE 
        Barcode IN (" + barCodesstring + ")", conn);
    conn.Open();
    SqlDataAdapter da = new SqlDataAdapter(cmd);
    da.Fill(dt);

    dt.Columns["InvtID"].SetOrdinal(0);
    dataGridView2.DataSource = dt;

    conn.Close();
}

1 Ответ

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

Этот код всегда добавляет новую строку DataRow newRow = dt.NewRow();, поэтому ваши строки не совпадают:

for (int row = 12; row <= 26; row++)
{
    DataRow newRow = dt.NewRow(); //Create a row
    //...
    dt.Rows.Add(newRow);                   
}

Но если я правильно понял, вы хотите установить данные в определенные ячейки данных.Затем вы должны найти существующую строку и установить значение ячейки:

DataRow dr = dt.Rows[yourRowNumber];
dr[3] = "Your New Value";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...