Как получить все данные в gridcontrol одним щелчком мыши - PullRequest
0 голосов
/ 03 мая 2018

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

private void btnin_Click(object sender, RoutedEventArgs e)
    {
        try
        {
            cnn.Open();
            SqlCommand cmd = new SqlCommand(" SELECT * FROM viewdata1 WHERE Customers = '" + cbbcustomer.Text + "'", cnn);
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            DataTable dt = new DataTable();
            da.Fill(dt);
            cnn.Close();

            XtraReport1 report = new XtraReport1();
            report.DataSource = dt;
            report.ShowPreviewDialog();
        }
        catch ( Exception ex )
        {
            MessageBox.Show(ex.Message);
        }

    }

Ответы [ 2 ]

0 голосов
/ 11 мая 2018

По некоторым причинам мне пришлось что-то изменить в своем коде. Я использовал Mark Vance's code, но это не сработало:

        DataTable a = new DataTable();
        a = ((DataView)ctrlgridviewdulieu0.ItemsSource).ToTable();

        foreach (DataRow row in a.Rows)
        {
            DataTable dtrow = new DataTable();
            dtrow = a.Clone();

            dtrow.ImportRow(row);
            try
            {
                cnn.Open();
                SqlCommand cmd = new SqlCommand(" SELECT * FROM viewdulieu2 WHERE Khachdat = N'" + dtrow.ToString() + "'", cnn);
                SqlDataAdapter da = new SqlDataAdapter(cmd);
                DataTable dt1 = new DataTable();
                da.Fill(dt1);
                XtraReport1 report = new XtraReport1();
                report.DataSource = dt1;
                //   report.Print();
                cnn.Close();
                report.ShowPreviewDialog();
            }
            catch (Exception ex)
            {
                cnn.Close();
                MessageBox.Show(ex.Message);
            }
        }
0 голосов
/ 03 мая 2018

Вы можете перебрать таблицу данных

foreach(DataRow row in dt.Rows)
{
    DataTable dtrow = new DataTable();
    dtrow = dt.Clone();

    dtrow.ImportRow(row);
    XtraReport1 report = new XtraReport1();
    report.DataSource = dtrow;
    //report.ShowPreviewDialog();  Not sure what happens here but maybe a print method is better suited?        
}

В основном для каждой строки вы создаете таблицу данных с одинаковой структурой и импортируете одну строку. Затем его назначают вашим источником данных. Это будет повторять все строки.

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