Как разбить строку и записать их в разные строки в одной и той же таблице данных c # - PullRequest
0 голосов
/ 02 октября 2018

У меня есть база данных, которая включает в себя идентификаторы моего компьютера, пользователей, старых пользователей и т. Д. Я отлично заполняю свое представление данных. В моей БД у меня есть столбец olduser, и он выглядит так:

john;marry;tonny

И другиестолбец «дата» выглядит так:

02.10.2018;05.09.2017;30.08.2015 

Поэтому я хочу видеть мое представление данных в виде

PCNAME      ID     USER      OLDUSER     PLACE     DATE
computer1   1      herry                 spain   
computer1   1                 john       spain    02.10.2018
computer1   1                 marry      spain    05.09.2017
computer1   1                 tonny      spain    30.08.2015 

Когда я пишу код ниже, он всегда дает мне

Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index

ошибка

 int i = 0;


 public void firstdatagrid()
    {
            DataTable table = new DataTable();
            dataGridView1.DataSource = table;
            baglantı = new SqlConnection();
            baglantı.ConnectionString = "Server=asdas;Database=asdsa;User Id=asdsa;password=asdaassad";
            baglantı.Open();

            komut = new SqlDataAdapter("SELECT * FROM TABLE WHERE PCID= '" + pcidcmbx.Text + "'", baglantı);
            ds = new System.Data.DataSet();
            komut.Fill(ds, "TABLE");
            dataGridView2.DataSource = ds.Tables[0];
            dataGridView2.Columns[0].HeaderText = "PCNAME";
            dataGridView2.Columns[1].HeaderText = "ID";
            dataGridView2.Columns[2].HeaderText = "USER";
            dataGridView2.Columns[3].HeaderText = "OLD USER";
            dataGridView2.Columns[4].HeaderText = "PLACE";
            dataGridView2.Columns[5].HeaderText = "DATE";

            foreach (DataGridViewRow row in dataGridView2.Rows)
            {
                names += row.Cells[3].Value;
                dates += row.Cells[5].Value;
                dataGridView2.Rows[0].Cells[3].Value = "";
                dataGridView2.Rows[0].Cells[5].Value = "";
            }

            foreach (var a in names.Split(new char[] { ';' }))
            {
                MessageBox.Show(a.ToString());
                DataRow newRow = table.NewRow();
                table.Rows.Add(newRow);
                dataGridView2.Rows[i].Cells[3].Value = a.ToString();
                i = i + 1;
            }
}

1 Ответ

0 голосов
/ 03 октября 2018

Прежде всего, вы получаете это сообщение, потому что ваши значения поступают из базы данных, и когда вы пытаетесь добавить новую строку вручную, datagridview не знает, что получится.

 DataTable table = new DataTable();
 DataGridView1.DataSource = table;

Поэтому попробуйте использовать егоЯ решу вашу проблему, я думаю

DataTable dataTable = (DataTable)dataGridView2.DataSource;
DataRow drToAdd = dataTable.NewRow();
drToAdd[3] = a.ToString();
dataTable.Rows.Add(drToAdd);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...