2015-05-24 4 views
0

Я должен показать, как dataGridView1Ошибка при использовании DataGridView

SN Name  Subject  Topic   Subtopic 
1. Mr.SK Jha Physics  Optics   Diffraction 
               Interference 
           Mechanics  MKS 
           Electromagnetic 
2. Mr.XYZ  Chemistry  Inorganic  Ethene 

Здесь тема совпадает с subject_id и он может иметь много данных, не указанных в качестве фиксированной.

Я видел много reference, но это дает GridViewRow как ошибка.

Я использую Visual Studio 2013, рамки 4,5

+0

Возможный дубликат [Групповые строки в DataGridView] (http://stackoverflow.com/questions/24486858/group-rows-in-datagridview) – Shaharyar

+0

Примером является ASP. Вы делаете Winforms, не так ли? (Пожалуйста, добавьте тег!) - DataGridViews не поддерживают группировку. Есть только способы сделать их похожими на них. Можно было бы использовать прозрачный текст в повторяющихся ячейках. – TaW

+0

Решили ли вы свои проблемы? – TaW

ответ

2

Самый простой способ сделать источник данных DataTable

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 

namespace WindowsFormsApplication1 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 

      DataTable dt = new DataTable(); 
      dt.Columns.Add("SN", typeof(string)); 
      dt.Columns.Add("Name", typeof(string)); 
      dt.Columns.Add("Subject", typeof(string)); 
      dt.Columns.Add("Topic", typeof(string)); 
      dt.Columns.Add("Subtopic", typeof(string)); 

      dt.Rows.Add(new object[] { "1.", "Mr.SK Jha", "Physics", "Optics", "Diffraction Interference" }); 
      dt.Rows.Add(new object[] { "", "", "", "Mechanics", "MKS" }); 
      dt.Rows.Add(new object[] { "", "", "", "Electromagnetic" }); 
      dt.Rows.Add(new object[] { 2, "Mr.XYZ", "Chemistry", "Inorganic", "Ethene" }); 

      dataGridView1.DataSource = dt; 
     } 
    } 
} 
​ 
+0

Это не позволит вам больше обращаться к отдельным ячейкам. – TaW

+0

TaW: Пожалуйста, объясните вашу проблему. Вы можете получить доступ к ячейкам в datatable или datagridview. – jdweng

+0

Действительно? Вы уверены, что можете получить доступ ко всем трем значениям «Оптическая дифракционная интерференция» отдельно? Я бы ожидал, что это должно быть возможно, но я могу ошибаться. – TaW

1

я предполагаю, что вы хотите DGV выглядеть сгруппированной таблицы, с повторением значения подавлены.

Это рутина расписывать повторяющиеся клетки прозрачны:

static void PaintGrouped(DataGridView dgv) 
{ 
    if (dgv.Rows.Count < 2) return; 
    if (dgv.Columns.Count < 2) return; 
    for (int row = 1; row < dgv.Rows.Count; row++) 
    { 
     bool suppressing = dgv[0, row].Value.Equals(dgv[0, row - 1].Value); 
     for (int col = 1; col < dgv.Columns.Count; col++) 
     { 
      bool equal = dgv[col, row].Value.Equals(dgv[col, row - 1].Value); 
      suppressing = suppressing && equal; 
      dgv[col, row].Style.ForeColor = supressing ? Color.Transparent : Color.Black; 
     } 
    } 
} 

Обратите внимание, что все значения по-прежнему на месте и быть изменены или скопированы. После любых изменений вы должны повторно применить процедуру! Также обратите внимание, что я решил никогда не подавлять 1-й столбец.

Смежные вопросы