title: ASP.NET DropDownList - How do I handle missing values?
body: <p>I have a list of values in a SQL Table which are used to popluate a DropDownList, having a unique Integer as the value of each item and a String as the visible text (via SqlDataSource). There is also a third field in the database which is a flag to indicate whether the list item is active or not (inactive items are not shown in the DropDownList)</p>
  
  <p>Selections made in the dropdown are stored in the database as their integer value (as part of a dataset making up the overall record), not the text value.</p>
  
  <p>Over time, the items in the DropDownList may be removed by marking the items as inactive. However, there is still a need to open old records which may have had a now-inactive item as part of it's data... </p>
  
  <p>My question is, what's the best way to ensure that the missing value included in the dropdown for the old record?</p>
  
  <p>The two methods that spring to mind are to either:</p>
  
  <p>Populate DropDownList with only the currently active items and, when loading a record, catch when the app tries to select a value that doesn't exist, go back to the db to see what it should be (the text value) and manually add it into the dropdown.</p>
  
  <p>or...</p>
  
  <p>Populate DropDownList with all list items (both active and inactive), load the record and then programatically remove all the inactive items (execpt for any that are now selected).</p>
  
  <p>Neither of these seem particularly efficient, so I was wondering whether there is a best practice for this kind of thing?</p>