Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 Using a DataGridView. 2 The DataGridView The DataGridView is a high level control that presents data in a form similar to an Excel spreadsheet. Can.

Similar presentations

Presentation on theme: "1 Using a DataGridView. 2 The DataGridView The DataGridView is a high level control that presents data in a form similar to an Excel spreadsheet. Can."— Presentation transcript:

1 1 Using a DataGridView

2 2 The DataGridView The DataGridView is a high level control that presents data in a form similar to an Excel spreadsheet. Can be linked to a data source so that it automatically shows whatever is in the source.

3 3 Example: CSE Schedule We will create a csv file with the schedule for CSE department undergraduate courses using the results of a search in OASIS. Read the file. Store the schedule information in a data structure in memory. Display the information in a DataGridView.

4 4 Where is the schedule? Ask google!

5 5 Where is the schedule? Click here

6 6 Where is the schedule? Click here

7 7 Fill in Search Criteria

8 8 Enter search parameters: Term: Spring 2011 Campus: Tampa Department: Engineering Computer Science Level: Undergraduate Status: All Click Search button (near bottom)

9 9 The Schedule

10 10 View Source Delete everything except the schedule.

11 11 Schedule in HTML

12 12 End of the Schedule

13 13 Schedule in HTML Replace all instances of with space characters. Save as schedule_2011_spring.html Double click to open file in browser Verify that it looks right. Right click and Open with Excel. Save as CSV schedule_2010_spring.csv Reopen in Excel and Notepad to verify. Note credit hours for Ind Study.

14 14 Data File The data file can be downloaded from the class web site: Downloads/Schedule_Viewer/ Downloads/Schedule_Viewer/ schedule_2011_spring.csv Download the file to a convenient folder if you have not created it from the web site.

15 15 Design the Program Create a new Windows forms project. Define a class to hold a schedule entry. Class Schedule_Record Add a DataGridView control to the form. Resize to occupy most of the screen.

16 16 New Project

17 17 Add Class

18 18 The Form Add a DataGridView control to the form. Set its name to dgvSchedule. Anchor on all sides.

19 19 Implement the Program On Page_Load Read the file. Skip over lines that are not schedule entries. For each schedule entry, create a Schedule_Record object. Add the object to a List. Finally, make the List the DataSource for the DataGridView control. Details on following slides

20 20 Class Schedule_Record The DataGridView will automatically display all public properties of the objects in its data source. Headings will be the properties’ class names. In class Schedule_Record create an automatic property for each column in the schedule grid. Plus one more, error_detected Downloads/Schedule_Viewer/Schedule_Record.cs

21 21 Automatic Properties class Schedule_Record { public String session { get; set; } public String college { get; set; } public String department { get; set; } public String reference { get; set; } public String course_number { get; set; } public String section { get; set; } public String course_title { get; set; } public String credit_hours { get; set; } public String permit { get; set; } public String status { get; set; } public String seats_open { get; set; } public String days { get; set; } public String time { get; set; } public String building { get; set; } public String room { get; set; } public String instructor { get; set; } public String campus { get; set; } public String delivery_method { get; set; } public String fees { get; set; } public bool error_detected { get; set; } }

22 22 Add Constructor Add a constructor for Schedule_Record Take a (csv) string as input. Split the string, creating an array of strings. Set the properties from the array.

23 23 The Constructor // Constructor public Schedule_Record(String S) { String[] Schedule_Info; Schedule_Info = S.Split(','); if ((Schedule_Info.Length < 19) || (Schedule_Info[1] != "EN")) { error_detected = true; return; } Continued on next slide

24 24 The Constructor session = Schedule_Info[0]; college = Schedule_Info[1]; department = Schedule_Info[2]; reference = Schedule_Info[3]; course_number = Schedule_Info[4]; section = Schedule_Info[5]; course_title = Schedule_Info[6]; credit_hours = Schedule_Info[7]; permit = Schedule_Info[8]; status = Schedule_Info[9]; seats_open = Schedule_Info[10]; days = Schedule_Info[11]; time = Schedule_Info[12]; building = Schedule_Info[13]; room = Schedule_Info[14]; instructor = Schedule_Info[15]; campus = Schedule_Info[16]; delivery_method = Schedule_Info[17]; fees = Schedule_Info[18]; error_detected = false;

25 25 Importing the Schedule Now we need to add code to the Page_Load handler to read the file and set up a List of Schedule_Record objects.

26 26 Importing the Schedule using System; using System.Collections.Generic; using System.Windows.Forms; using System.IO; namespace Schedule_Viewer { public partial class Form1 : Form { List Schedule; public Form1() { InitializeComponent(); import_schedule(); }

27 27 import_schedule void import_schedule() { StreamReader Reader = null; String input_line; String file_name; Schedule = new List (); file_name = @"c:\schedule_2011_spring.csv"; Reader = new StreamReader(file_name); if (Reader == null) { MessageBox.Show("Failed to open file " + file_name); return; }

28 28 import_schedule // Read the schedule file. while ((input_line = Reader.ReadLine()) != null) { Schedule_Record sr = new Schedule_Record(input_line); if (!sr.error_detected) { Schedule.Add(sr); }

29 29 Setting the DataSource Finally, we need to make the List be the DataSource for the DataGridView: dgvSchedule.DataSource = Schedule;

30 30 Setting the DataSource Build and run.

31 31 Program in Action Scroll right.

32 32 After Scrolling Right

33 33 Useless Columns Several columns are useless, as every entry has the same value, or they just don’t provide any information: session college department campus delivery_method error_detected

34 34 Removing Items from the Grid We can remove the useless columns from the DataGridView by making the corresponding properties private.

35 35 Removing Items from the Grid

36 36 error_detected Issue We will need an accessor method for error_detected for use by Form1.cs Modify import_schedule to use the function.

37 37 Program in Action Note that you can resize the columns.

38 38 Setting the Column Widths We can set the column widths programatically. The DataGridView has a collection of objects that define the columns. Columns property Each object in Columns is of type DataGridViewColumn. Class DataGridViewColumn has a Width property, which we can set. Or we can ask the system to set the width automatically.

39 39 Setting the Column Widths How do we determine each column's width? Alternative methods: Determine size of strings in the columns. Cut and try. Set the DataGridView's AutoSizeColumnsMode

40 40 AutoSizeColumnsMode Display the properties of dgvSchedule. Locate AutoSizeColumnsMode Set it to "AllCells"

41 41 Program Running

42 42 Avoid Horizontal Scrolling Let’s try to get an entire schedule record to fit on the screen without scrolling in the horizontal direction. Make the form and the DataGridView somewhat wider. Tighten up some columns where the headings are wider than the data. Section Credit_Hours Seats_Open

43 43 Tighten Up Some Columns public Form1() { InitializeComponent(); import_schedule(); dgvSchedule.DataSource = Schedule; DataGridViewColumnCollection cols = dgvSchedule.Columns; cols[2].AutoSizeMode = DataGridViewAutoSizeColumnMode.None; cols[2].Width = 30; // Section cols[4].AutoSizeMode = DataGridViewAutoSizeColumnMode.None; cols[4].Width = 30; // Credit Hours cols[7].AutoSizeMode = DataGridViewAutoSizeColumnMode.None; cols[7].Width = 30; // Seats Open }

44 44 Final Result

45 45 Summary The DataGridView control makes it easy to display tabular data. Properties permit us to control its appearance.

Download ppt "1 Using a DataGridView. 2 The DataGridView The DataGridView is a high level control that presents data in a form similar to an Excel spreadsheet. Can."

Similar presentations

Ads by Google