Создание динамических элементов управления и привязка к набору данных - PullRequest
1 голос
/ 07 февраля 2011

У меня есть файл журнала, который может содержать одно и то же событие (Проверка) несколько раз, т.е.:

ID: 001 Результат проверки:
Начало проверки: 05: 42: 34
Конец проверки: 07: 12: 52

Результат проверки:
Начало проверки: 12: 38: 01
Конец проверки: 14: 05: 12

Я создал динамическиэлементы управления (метка и TextBox или DateTimePicker), которые отображают эту информацию для пользователя;я хочу знать, как привязать эти элементы управления к моему набору данных таким образом, чтобы при записи в базу данных каждая проверка представляла собой новую строку, связанную с тем же идентификатором, например:

UID | ID  | Start    | End  
1   | 001 | 05:42:34 | 07:12:52  
2   | 001 | 12:38:01 | 14:05:12  

Codewise:Я указываю программе каталог журналов, которые отображаются в контрольном списке.При изменении SelectedIndex я вызываю следующее:

void ParseImagerLogs(string source)
    {
    int i = 0;
    //Log fields are parsed to a key/value pair
         if (key.Equals("LogID"))
         {
             logIdTextBox.Text = value
         }

         if (key.Equals("VerStarted"))
         {
             //Date format ddd MMM dd HH:mm:ss yyyy is parsed to a useable format and 
             //saved as timeStart
             verStartedDateTimePicker.Value = verTimeStart;
         }

         if (key.Equals("VerEnded"))
         {
             //Same parsing technique
             verEndedDateTimePicker.Value = verTimeEnd;
             //Work out the elapsed time
             verTime - timeEnd.Subtract(timeStart).ToString();
             //Pass the fields to a new method which dynamically generates the 
             GenerateVerificationFields(i, verStartedDateTimePicker.Value, verEndeDateTimePicker.Value, verTime.TextBox
             //I have my first verification instance, so i++ and look for the next one.
             i++;
          }
     }

private void GenerateVerificationFields(int amount, DateTime verStartval, DateTime verEndval, string verTimeval)
    {

        int i = amount;
        int j = i + 1;
        //Create groupBox
        GroupBox groupBox = new GroupBox();
        groupBox.Name = "verGroup" + i.ToString();
        groupBox.Width = 430;
        groupBox.Height = 120;
        groupBox.Left = 5;
        groupBox.Top = 42 + (groupBox.Height * i) + (10 * i);
        groupBox.Text = "Verification #" + j.ToString();

        //Create VerStart
        DateTimePicker verStart = new DateTimePicker();
        verStart.Name = "verStart" + i.ToString();
        verStart.Width = 224;
        verStart.Height = 22;
        verStart.Location = new Point(160, 25);
        verStart.DataBindings.Add(new Binding("Value", acqreports_testDataSet, "verification.VerStarted"));
        verStart.Value = verStartval;

        //Create VerEnded
        DateTimePicker verEnd = new DateTimePicker();
        verEnd.Name = "verStart" + i.ToString();
        verEnd.Width = 224;
        verEnd.Height = 22;
        verEnd.Location = new Point(160, 55);
        verEnd.DataBindings.Add(new Binding("Value", acqreports_testDataSet, "verification.VerEnded"));
        verEnd.Value = verEndval;

        //Create VerTime
        TextBox verTime = new TextBox();
        verTime.Name = "verTime" + i.ToString();
        verTime.Width = 224;
        verTime.Height = 22;
        verTime.Location = new Point(160, 85);
        verTime.Text = verTimeval;

        //Create Ver Start label
        Label lblVerStart = new Label();
        lblVerStart.Name = lblVerStart + i.ToString();
        lblVerStart.Text = "Ver Started: ";
        lblVerStart.Location = new Point(5, 25);

        //Create Ver End label
        Label lblVerEnd = new Label();
        lblVerEnd.Name = lblVerEnd + i.ToString();
        lblVerEnd.Text = "Ver Ended: ";
        lblVerEnd.Location = new Point(5, 55);

        //Create Ver Time label
        Label lblVerTime = new Label();
        lblVerTime.Name = lblVerTime + i.ToString();
        lblVerTime.Text = "Ver Time: ";
        lblVerTime.Location = new Point(5, 85);

        //Add created controls to groupBox
        groupBox.Controls.Add(verStart);
        groupBox.Controls.Add(verEnd);
        groupBox.Controls.Add(verTime);
        groupBox.Controls.Add(lblVerStart);
        groupBox.Controls.Add(lblVerEnd);
        groupBox.Controls.Add(lblVerTime);
        tabControl2.TabPages[2].Controls.Add(groupBox);
    }

Затем я хочу использовать DateTimePickers и VerTime.Text для обновления таблицы с каждым событием проверки.

1 Ответ

0 голосов
/ 07 февраля 2011

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

...