title: FindByName or FindByValue set .selected on dropdownlist returns error Object reference not set to an instance of an object
body: <p>I have built some dropdown lists which are bound to linq datasources. When I select a row on my gridview, a query is executed, then the dropdown list selections should be set according to the data from the query. RegionListBox is working fine when I do this, but when I try to use the .FindByName to set the .Selected attribute of the other three list boxes, it appears they have not been populated yet in the order of operations. When I comment out the three ".FindByName" lines in the code below, the code runs with no issue, but of course the dropdown values are not selected. When I execute the code with my 3 findbyname lines in place, it errors on the first one with a  Object reference not set to an instance of an object. - setting a watch on the items collection of the list, shows empty</p>
  
  <p>the question is: why is the dropdownlist item collection empty when the regionlistbox item selection is already populated? When/where should I set the selected so that the dropdownlist item collection will be populated?</p>
  
  <pre><code>        protected void ItemGridView_RowCommand(object sender, GridViewCommandEventArgs e)
      {
          if (e.CommandName == "Page")
              return;
  
          if (e.CommandName == "EditItem")
          {
              string[] commandArgs = e.CommandArgument.ToString().Split(new char[] { ',' });
  
              ItemGridView.SelectedIndex = -1;
              ItemGridView.SelectedIndex = int.Parse(commandArgs[1]);
              ServiceListBox.ClearSelection();
              RegionListBox.ClearSelection();
  
              editPanel.Visible = true;
              //query your database and store the result set in a DataTable 
              DasLinqClassesDataContext db = new DasLinqClassesDataContext();
              var ItemRowSelected = db.GetItemForUserById(Session["CSPAttuid"].ToString(), int.Parse(commandArgs[0])).FirstOrDefault();
              if (ItemRowSelected != null)
              {
                  if (ItemRowSelected.region != null)
                  {
                      string[] RegionIds;
                      RegionIds = ItemRowSelected.region.Split(',');
                      foreach (string element in RegionIds)
                      {
                          RegionListBox.Items.FindByValue(element.ToString()).Selected = true;
                      }
                  }
  
  
                  fieldTitle.Text = ItemRowSelected.title;
                  fieldNewOverview.Text = ItemRowSelected.overview;
                  lblPreviewTitle.Text = ItemRowSelected.title;
                  lblPreviewAudience.Text = ItemRowSelected.audience;
                  lblPreviewRegion.Text = ItemRowSelected.region_name;
                  lblPreviewService.Text = ItemRowSelected.service;
                  lblPreviewOverview.Text = ItemRowSelected.overview;
                  lblPreviewDocument.Text = ItemRowSelected.doc;
                  lblPreviewAuthor.Text = ItemRowSelected.author_name;
                  //urgent checkbox / image
                  if (ItemRowSelected.urgent == true)
                  {
                      urgentEditImage.Visible = true;
                      checkUrgent.Checked = true;
                      urgentViewImage.Visible = true;
                  }
                  else
                  {
                      urgentEditImage.Visible = false;
                      checkUrgent.Checked = false;
                      urgentViewImage.Visible = false;
                  }
                  //audio hyperlink/image
                  if (ItemRowSelected.audio != null)
                  {
                      audioEditImage.Visible = true;
                      audioViewImage.Visible = true;
                      fieldAudio.Text = ItemRowSelected.audio.ToString();
                  }
                  else
                  {
                      audioEditImage.Visible = false;
                      audioViewImage.Visible = false;
                      fieldAudio.Text = "";
                  }
                  //document
                  if (ItemRowSelected.doc != null)
                  {
                      fieldDocument.Text = ItemRowSelected.doc;
                      fieldDocLink.Text = ItemRowSelected.link;
                  }
                  //service
                  if(ItemRowSelected.service != null)
                  {
                      ServiceListBox.Items.FindByText(ItemRowSelected.service.ToString()).Selected = true;
                  }
                  //audience
                  if (ItemRowSelected.audience != null)
                  {
                      ServiceListBox.Items.FindByText(ItemRowSelected.audience.ToString()).Selected = true;
                  }
                  //author
                  if (ItemRowSelected.author != null)
                  {
                      ServiceListBox.Items.FindByText(ItemRowSelected.author.ToString()).Selected = true;
                  }
              }
              hiddenId.Value = ItemRowSelected.id.ToString();
  
          }
      }
  </code></pre>
  
  <p>Here is some of the pages code for the dropdown lists:</p>
  
  <pre><code>.....d&gt;
                  &lt;td width=707 colspan=2 valign=top style='width:530.25pt;border:none;border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'&gt;
                  &lt;p class=MsoNormal&gt;
                  &lt;b&gt;
                      &lt;asp:DropDownList ID="ServiceListBox" runat="server" 
                          DataSourceID="LinqDsService" DataTextField="name" DataValueField="id"&gt;
                      &lt;/asp:DropDownList&gt;&lt;asp:ImageButton ID="AddNewServiceToDropdown" runat="server" 
                          CausesValidation="False" ImageUrl="~/images/addButton.png" /&gt;
                      &lt;asp:ModalPopupExtender ID="ModalPopAddNewServiceToDropdown" runat="server" 
                          BackgroundCssClass="modalBackground" CancelControlID="btnCancelService" 
                          DynamicServicePath="" Enabled="True" PopupControlID="panAddService" 
                          TargetControlID="AddNewServiceToDropdown"&gt;
                      &lt;/asp:ModalPopupExtender&gt;
                  &lt;/span&gt;
                  &lt;/b&gt;
                  &lt;/p&gt;
                  &lt;/td&gt;
                  &lt;/tr&gt;
                  &lt;tr&gt;
                  &lt;td valign=top 
                          style='border-left:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;background:#FF6600;padding:0in 5.4pt 0in 5.4pt; border-top-style: none; border-top-color: inherit; border-top-width: medium; border-bottom-style: none; border-bottom-color: inherit; border-bottom-width: medium;' 
                          class="style2"&gt;
                  &lt;p class=MsoNormal&gt;
                  &lt;span style='font-family:"ClearviewATT","sans-serif"'&gt;
                  &lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
                  &lt;/span&gt;
                  &lt;/p&gt;
                  &lt;/td&gt;
                  &lt;td width=193 colspan=2 valign=top style='width:144.55pt;border:none;padding:0in 5.4pt 0in 5.4pt'&gt;
                  &lt;p class=MsoNormal&gt;
                  &lt;span style='font-size:11.0pt;font-family:"ClearviewATT LT","sans-serif"'&gt;Overview:&lt;o:p&gt;
                  &lt;/o:p&gt;
                  &lt;/span&gt;
                  &lt;/p&gt;
                  &lt;/td&gt;
                  &lt;td width=707 colspan=2 valign=top style='width:530.25pt;border:none;border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'&gt;
                  &lt;p class=MsoNormal 
                          style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; height: 52px; width: 602px;'&gt;
                      &lt;asp:TextBox ID="fieldNewOverview" TextMode="MultiLine" runat="server" 
                          Width="600px"&gt;&lt;/asp:TextBox&gt;
                  &lt;/p&gt;
                  &lt;/td&gt;
                  &lt;/tr&gt;
                  &lt;tr&gt;
                  &lt;td valign=top 
                          style='border-left:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;background:#FF6600;padding:0in 5.4pt 0in 5.4pt; border-top-style: none; border-top-color: inherit; border-top-width: medium; border-bottom-style: none; border-bottom-color: inherit; border-bottom-width: medium;' 
                          class="style2"&gt;
                  &lt;p class=MsoNormal&gt;
                  &lt;span style='font-family:"ClearviewATT","sans-serif"'&gt;
                  &lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
                  &lt;/span&gt;
                  &lt;/p&gt;
                  &lt;/td&gt;
                  &lt;td width=193 colspan=2 valign=top style='width:144.55pt;border:none;padding:0in 5.4pt 0in 5.4pt'&gt;
                  &lt;p class=MsoNormal&gt;
                  &lt;span style='font-size:11.0pt;font-family:"ClearviewATT LT","sans-serif"'&gt;WIIFM (What&amp;#8217;s In It For Me):&lt;o:p&gt;
                  &lt;/o:p&gt;
                  &lt;/span&gt;
                  &lt;/p&gt;
                  &lt;/td&gt;
                  &lt;td width=707 colspan=2 valign=top style='width:530.25pt;border:none;border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'&gt;
                  &lt;p class=MsoNormal&gt;
                      &lt;asp:TextBox ID="TextBox1" runat="server" Width="600px"&gt;&lt;/asp:TextBox&gt;
                  &lt;/p&gt;
                  &lt;/td&gt;
                  &lt;/tr&gt;
                  &lt;!--- document number ---&gt;
                  &lt;tr&gt;
                  &lt;td valign=top 
                          style='border-left:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;background:#FF6600;padding:0in 5.4pt 0in 5.4pt; border-top-style: none; border-top-color: inherit; border-top-width: medium; border-bottom-style: none; border-bottom-color: inherit; border-bottom-width: medium;' 
                          class="style2"&gt;
                  &lt;p class=MsoNormal&gt;
                  &lt;span style='font-family:"ClearviewATT","sans-serif"'&gt;
                  &lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
                  &lt;/span&gt;
                  &lt;/p&gt;
                  &lt;/td&gt;
                  &lt;td width=193 colspan=2 valign=top style='width:144.55pt;border:none;padding:0in 5.4pt 0in 5.4pt'&gt;
                  &lt;p class=MsoNormal&gt;
                  &lt;span style='font-size:11.0pt;font-family:"ClearviewATT LT","sans-serif"'&gt;Document Number:&lt;o:p&gt;
                  &lt;/o:p&gt;
                  &lt;/span&gt;
                  &lt;/p&gt;
                  &lt;/td&gt;
                  &lt;td width=707 colspan=2 valign=top style='width:530.25pt;border:none;border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'&gt;
  
  
                  &lt;p class=MsoNormal&gt;
                    &lt;table&gt;
                      &lt;tr&gt;
                          &lt;td&gt;&lt;span  style='font-size:11.0pt;font-family:"ClearviewATT LT","sans-serif"'&gt;&lt;asp:Label ID="Label3" runat="server" Text="Document Name"&gt;&lt;/asp:Label&gt;&lt;/span&gt;&lt;/td&gt;
  
  
                              &lt;td&gt;
                                  &lt;asp:TextBox ID="fieldDocument" runat="server" Width="212px"&gt;&lt;/asp:TextBox&gt;
                              &lt;/td&gt;
  
                  &lt;/tr&gt;
                  &lt;tr&gt;
                      &lt;td&gt;&lt;span  style='font-size:11.0pt;font-family:"ClearviewATT LT","sans-serif"'&gt;&lt;asp:Label ID="Label4" runat="server" Text="Hyperlink"&gt;&lt;/asp:Label&gt;&lt;/span&gt;&lt;/td&gt;
                      &lt;td&gt;&lt;asp:TextBox ID="fieldDocLink" runat="server" Width="485px"&gt;&lt;/asp:TextBox&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
                  &lt;/p&gt;
                  &lt;/td&gt;
                  &lt;/tr&gt;
                  &lt;!--- author ---&gt;
                  &lt;tr&gt;
                  &lt;td valign=top 
                          style='border-left:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;background:#FF6600;padding:0in 5.4pt 0in 5.4pt; border-top-style: none; border-top-color: inherit; border-top-width: medium; border-bottom-style: none; border-bottom-color: inherit; border-bottom-width: medium;' 
                          class="style2"&gt;
                  &lt;p class=MsoNormal&gt;
                  &lt;/p&gt;
                  &lt;/td&gt;
                  &lt;td width=193 colspan=2 valign=top style='width:144.55pt;border:none;padding:0in 5.4pt 0in 5.4pt'&gt;
                  &lt;p class=MsoNormal&gt;
                  &lt;span style='font-size:11.0pt;font-family:"ClearviewATT LT","sans-serif"'&gt;Author:&lt;o:p&gt;
                  &lt;/o:p&gt;
                  &lt;/span&gt;
                  &lt;/p&gt;
                  &lt;/td&gt;
                  &lt;td width=707 colspan=2 valign=top style='width:530.25pt;border:none;border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'&gt;
                  &lt;p class=MsoNormal&gt;
                  &lt;asp:DropDownList ID="AuthorListBox" runat="server" DataSourceID="LinqDsAuthor" 
                          DataTextField="name" DataValueField="id"&gt;
                      &lt;/asp:DropDownList&gt;   etc.....
  </code></pre>
  
  <p>and here is some of the page code for the linq datasources:</p>
  
  <pre><code> &lt;!---begin linqdatasources---&gt;
  &lt;asp:LinqDataSource ID="Region" runat="server" 
      ContextTypeName="das.DasLinqClassesDataContext" EntityTypeName="" 
      Select="new (id, name)" TableName="ref_regions" Where="active == @active"&gt;
      &lt;WhereParameters&gt;
          &lt;asp:Parameter DefaultValue="true" Name="active" Type="Boolean" /&gt;
      &lt;/WhereParameters&gt;
  &lt;/asp:LinqDataSource&gt;
  &lt;asp:LinqDataSource ID="LinqDsService" runat="server" 
      ContextTypeName="das.DasLinqClassesDataContext" EntityTypeName="" 
      Select="new (id, name, active)" TableName="ref_services" 
      Where="active == @active"&gt;
      &lt;WhereParameters&gt;
          &lt;asp:Parameter DefaultValue="true" Name="active" Type="Boolean" /&gt;
      &lt;/WhereParameters&gt;
  &lt;/asp:LinqDataSource&gt;
  &lt;asp:LinqDataSource ID="LinqDsAudience" runat="server" 
      ContextTypeName="das.DasLinqClassesDataContext" EntityTypeName="" 
      Select="new (id, name, type)" TableName="ref_audiences" 
      Where="active == @active"&gt;
      &lt;WhereParameters&gt;
          &lt;asp:Parameter DefaultValue="true" Name="active" Type="Boolean" /&gt;
      &lt;/WhereParameters&gt;
  &lt;/asp:LinqDataSource&gt;
  &lt;br /&gt;
  &lt;asp:LinqDataSource ID="LinqDsAuthor" runat="server" 
      ContextTypeName="das.DasLinqClassesDataContext" EntityTypeName="" 
      Select="new (id, name)" TableName="ref_authors" Where="active == @active"&gt;
      &lt;WhereParameters&gt;
          &lt;asp:Parameter DefaultValue="true" Name="active" Type="Boolean" /&gt;
      &lt;/WhereParameters&gt;
  &lt;/asp:LinqDataSource&gt;
  &lt;!---end linqdatasources---&gt;
  </code></pre>