/// <summary> /// Load the devices for the partition based on the filters specified in the filter panel. /// </summary> /// <remarks> /// This method only reloads and binds the list bind to the internal grid. <seealso cref="UpdateUI()"/> should be called /// to explicit update the list in the grid. /// <para> /// This is intentionally so that the list can be reloaded so that it is available to other controls during postback. In /// some cases we may not want to refresh the list if there's no change. Calling <seealso cref="UpdateUI()"/> will /// give performance hit as the data will be transfered back to the browser. /// /// </para> /// </remarks> public void LoadDevices() { DeviceSelectCriteria criteria = new DeviceSelectCriteria(); // only query for device in this partition criteria.ServerPartitionKey.EqualTo(Partition.GetKey()); if (!String.IsNullOrEmpty(AETitleFilter.Text)) { string key = AETitleFilter.Text + "%"; key = key.Replace("*", "%"); key = key.Replace("?", "_"); criteria.AeTitle.Like(key); } if (!String.IsNullOrEmpty(DescriptionFilter.Text)) { string key = DescriptionFilter.Text + "%"; key = key.Replace("*", "%"); key = key.Replace("?", "_"); criteria.Description.Like(key); } if (!String.IsNullOrEmpty(IPAddressFilter.Text)) { string key = IPAddressFilter.Text + "%"; key = key.Replace("*", "%"); key = key.Replace("?", "_"); criteria.IpAddress.Like(key); } if (DHCPFilter.SelectedIndex != 0) { if (DHCPFilter.SelectedIndex == 1) { criteria.Dhcp.EqualTo(true); } else { criteria.Dhcp.EqualTo(false); } } if (DeviceTypeFilter.SelectedIndex > -1) { List <DeviceTypeEnum> types = new List <DeviceTypeEnum>(); foreach (ListItem item in DeviceTypeFilter.Items) { if (item.Selected) { types.Add(DeviceTypeEnum.GetEnum(item.Value)); } } criteria.DeviceTypeEnum.In(types); } // only enabled devices and devices that allow retrieves. criteria.Enabled.EqualTo(true); criteria.AllowRetrieve.EqualTo(true); DeviceGridPanel.Devices = _theController.GetDevices(criteria); DeviceGridPanel.RefreshCurrentPage(); }