In the last installment, we modified our application so that it could switch between family members for data display and entry. This time, we’re going to add a table at the top that shows the current weight for all family members.
We add the table right after the <h1> title:
Family Summary <br />
<asp:Table ID="c_tableSummary" runat="server" BorderWidth="1px" CellPadding="2" CellSpacing="2" GridLines="Both"/>
Then we need a method to walk through the records and fetch the current weight from each of them. The following will do that:
TableHeaderRow headerRow = new TableHeaderRow();
TableHeaderCell headerCell = new TableHeaderCell();
headerCell.Text = "Name";
headerCell = new TableHeaderCell();
headerCell.Text = "Weight";
foreach (HealthRecordInfo record in PersonInfo.AuthorizedRecords.Values)
HealthRecordSearcher searcher = record.CreateSearcher();
HealthRecordFilter filter = new HealthRecordFilter(Weight.TypeId);
filter.MaxItemsReturned = 1;
HealthRecordItemCollection weights = searcher.GetMatchingItems();
if (weights.Count == 1)
TableRow row = new TableRow();
TableCell nameCell = new TableCell();
nameCell.Text = record.Name;
Weight weight = weights as Weight;
TableCell weightCell = new TableCell();
weightCell.Text = weight.Value.DisplayValue.ToString();
Currently, there is no way to make a single request that fetches data for more than one record, so we need to create an execute a separate query for each one.
With all the operations that we are performing, the application is running a little bit slowly. We’ll do some investigation into what’s going on, and see if we can’t make some improvements.