2017-01-05 20 views
1

以下に述べるように、データグリッドビューでデータを表現したいと思います。私は答えのためにGoogleを持っていますが、成功はありません。私は正常に列(学生の名前)を追加しましたが、件名とマークの行は追加しませんでした。私はDatatableコンセプトとセルワイズコピーを試しましたが、結果はありませんでした。1つの行を2つに分割するか、1つの行に2つのエンティティを追加する

enter image description here

  int Selectedindex = comboBox3.SelectedIndex; 
      Equipment slectedEq = m_equipmentList.ElementAt(Selectedindex); // I am explaining data structure (original data is different) as a students data which is stored in "m_equipmentList" 
      string P_chname;  
      DataTable Dt = new DataTable(); 

      for (int i = 0; i < slectedEq.m_ChannelAccess.Count; i++) 
      { 
       ChannelAccess chAccess = m_equipmentList.ElementAt(Selectedindex).m_ChannelAccess.ElementAt(i); 
       P_chname = slectedEq.m_ChannelAccess.ElementAt(i).m_deviceName;// example: here I get student Name 
       Dt.Columns.Add(P_chname); 
       for (int j = 0; j < slectedEq.m_ChannelAccess.ElementAt(i).m_Parameters.Count; j++) 
       { 
        string prName; 
        string prValue; 
        prName= chAccess.m_Parameters.ElementAt(j).m_paramName; // Here i get subject name 
        prValue = chAccess.m_Parameters.ElementAt(j).m_ParamValue;// Here i get subject marks 
        object[] RowValues = { "", "" }; 

        //assign values into row object 
        RowValues[0] = prName; 
        RowValues[1] = prValue; 

        //create new data row 
        DataRow dRow; 
        dRow = Dt.Rows.Add(RowValues); 
        Dt.AcceptChanges(); 



       } 

       dataGridView1.DataSource = Dt; 
      } 

上記の一つは、私はdataviewgridを追加したいと思いますどのように例の写真です。それをどうやって行うのか考えている人もいますか?

ありがとうございました。

+0

既に試したコードを共有できますか? – Venky

+0

「学生と科目」または「機器/ ChannelAccessとパラメータ」を使用すると、1つの命名法に固執すると、質問が理解しやすくなると思います... – wkl

+0

はい、あなたの権利があります。 –

答えて

1

私は、これはDataGridViewで行うのは難しいと思い、私は2つの入れ子ItemsControlの使用をお勧め:

class Student 
{ 
    string Name{ get; set; } 
    IEnumerable<Subject>{ get; set; } 
} 

を、同様の科目:あなたはこれに類似した定義された学生を持っていると仮定し

<ItemsControl ItemsSource="{Binding to some IEnumerable<Student>, Mode=OneWay}"> 
    <!-- template for each student --> 
    <ItemsControl.ItemTemplate> 
     <DataTemplate DataType="{x:Type Student}"> 
      <StackPanel Orientation="Vertical"> 
       <TextBlock Text="{Binding Name}"/> 
       <ItemsControl ItemsSource="{Binding Subjects, Mode=OneWay}"> 
        <!-- template for each subject --> 
        <ItemsControl.ItemTemplate> 
         <DataTemplate DataType="{x:Type Subject}"> 
          <StackPanel Orientation="Horizontal"> 
           <TextBlock Text="{Binding Name}"/> 
           <TextBlock Text="{Binding Mark}"/> 
          </StackPanel> 
         </DataTemplate> 
        </ItemsControl.ItemTemplate> 
      </ItemsControl> 
     </DataTemplate> 
     <!-- template for the inner control --> 
     <ItemsControl.Template> 
      <ControlTemplate> 
       <StackPanel Orientation="Horizontal"> 
        <ItemsPresenter/> 
       </StackPanel> 
      </ControlTemplate> 
    </ItemsControl.Template> 
    </ItemsControl.ItemTemplate> 
    <!-- template for the outer control --> 
    <ItemsControl.Template> 
     <ControlTemplate> 
      <StackPanel Orientation="Horizontal"> 
       <ItemsPresenter/> 
      </StackPanel> 
     </ControlTemplate> 
    </ItemsControl.Template> 
</ItemsControl> 

をこれまで:

class Subject 
{ 
    string Name{ get; set; } 
    int Mark{ get;set; } 
} 

Bordersとそれを見栄えにするためにいくつかWidthを定義します。また、名前とマークを編集する場合は、TextBlockTextBoxで置き換えることができます。

関連する問題