2011-05-19 41 views
2

我已经DROPDOWNLIST我想要得到的值Repeater控件的内部,我得到“未将对象引用设置到对象的实例”中选择下拉列表值。我不知道什么尝试。由于获取中继控制

ASPX CODE:

<asp:Repeater ID="GeneralRepeater" runat="server" 
      OnItemDataBound="GeneralRepeater_OnItemDataBound" 
       onitemcommand="GeneralRepeater_ItemCommand"> 
      <HeaderTemplate></HeaderTemplate> 
      <ItemTemplate> 
      <tr> 
      <td class="style2"> 
      </td> 
       <td class="style2"> 
       <asp:DropDownList ID="GeneralDDL" AppendDataBoundItems="true" DataTextField="DiagnosisCode" 
        DataValueField="DiagnosisCode" runat="server" AutoPostBack="True" /> 
       </td> 

      </tr> 
      </ItemTemplate> 
      <FooterTemplate></FooterTemplate> 
      </asp:Repeater> 
     </asp:Panel> 

后面的代码:

protected void GeneralRepeater_OnItemDataBound(object sender, 
               RepeaterItemEventArgs e) 
    { 
     if (e.Item.ItemType == ListItemType.Item || 
      e.Item.ItemType == ListItemType.AlternatingItem) 
     { 
      DropDownList myDDL = (DropDownList)e.Item.FindControl("GeneralDDL"); 
      Diagnosis oDiagnosis = new Diagnosis(); 
      DataView dv = new DataView(oDiagnosis.GetDiagnosis()); 
      myDDL.DataSource = dv; 
      myDDL.DataTextField = "DiagnosisCode"; 
      myDDL.DataValueField = "DiagnosisCode"; 
      myDDL.DataBind(); 

     } 
    } 

protected void cmdSave_Click(object sender, EventArgs e) 
{ 
    string ProductSelected; 
    string FeatureSelected; 
    string SectionSelected; 


    foreach(RepeaterItem dataItem in GeneralRepeater.Items) 
    { 
     ProductSelected = ((DropDownList)GeneralRepeater.FindControl("GeneralDDL")).SelectedItem.Text; //error Object reference not set to an instance of an object. 
    }     
} 

我有上保存选定值问题..

回答

9

我发现在代码您是通过generalrepeater项目循环。您正在访问的repeater项目的DataItem的。我尝试了这种代码在这里,理想的代码应该说的

foreach(RepeaterItem dataItem in GeneralRepeater.Items)   
{    
    ProductSelected = ((DropDownList)dataItem.FindControl("GeneralDDL")).SelectedItem.Text; //No error 
} 

代替

foreach(RepeaterItem dataItem in GeneralRepeater.Items) 
{ 
    ProductSelected = ((DropDownList)GeneralRepeater.FindControl("GeneralDDL")).SelectedItem.Text; //error Object reference not set to an instance of an object. 
} 
+1

我没有试过,但我认为中怡是正确的。虽然“DataItem的”可能是有点用词不当。 – 2011-05-19 03:27:00