pageRecord m_recordPage; //List with page records /// <summary> /// This method performs a connection to the server,get the first page /// of records and populate the grid with it. /// </summary> public MainWindow() { InitializeComponent(); ChannelFactory <IDataController> dataFactory; NetTcpBinding tcpBinding = new NetTcpBinding(); tcpBinding.MaxReceivedMessageSize = System.Int32.MaxValue; tcpBinding.ReaderQuotas.MaxArrayLength = System.Int32.MaxValue; string sURL = "net.tcp://localhost:50001/Data"; dataFactory = new ChannelFactory <IDataController>(tcpBinding, sURL); m_data = dataFactory.CreateChannel(); string [] columns = m_data.GetColumnNames(); /*Binds the columns with the name of the fields of the table*/ foreach (string name in columns) { DataGridTextColumn textcol = new DataGridTextColumn(); Binding b = new Binding(name); textcol.Binding = b; textcol.Header = name; dgrdData.Columns.Add(textcol); } m_recordPage = new pageRecord(); txtPage.Text = "1"; UpdateDataGrid(1); }
/// <summary> /// This method performs the validation of number pages, populates the grid with data /// and it hides the information that might not be shown(notes, etc) /// NOTE: The page has 100 records. /// </summary> private void UpdateDataGrid(int page) { int starRow, endRow, numRows; starRow = (page - 1) * 100; endRow = (page * 100) - 1; numRows = m_data.getNumRows(); if (endRow > (numRows - 1)) { endRow = (numRows - 1); } if (starRow >= 0 && starRow < numRows) { m_recordPage = m_data.GetPageRecord(starRow, endRow); dgrdData.ItemsSource = m_recordPage.Records; dgrdData.IsReadOnly = true; dgrdData.Columns[4].Visibility = Visibility.Hidden; dgrdData.Columns[5].Visibility = Visibility.Hidden; dgrdData.Columns[7].Visibility = Visibility.Hidden; dgrdData.Columns[8].Visibility = Visibility.Hidden; dgrdData.Columns[10].Visibility = Visibility.Hidden; dgrdData.Columns[11].Visibility = Visibility.Hidden; dgrdData.SelectedIndex = 0; /*If the number of rows returned by the server is not divisible by 100, * it means that the last page has less records than 100 records. So, it is add 1 at number * pages.*/ lblTotalPages.Content = numRows % 100 != 0 ? " of " + Convert.ToString((numRows / 100) + 1) : " of " + Convert.ToString((numRows / 100)); txtPage.Text = page.ToString(); } else { MessageBox.Show("This is not a valid page number"); } }