【问题标题】:Get selected dropdownlist value inside a repeater control在中继器控件中获取选定的下拉列表值
【发布时间】:2011-05-19 02:25:20
【问题描述】:

我正在尝试获取其值的中继器控件内有下拉列表,并且我得到“对象引用未设置为对象的实例”。我不确定还能尝试什么。谢谢

ASPX 代码:

   <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.
    }                   
}

我在保存所选值时遇到问题..

【问题讨论】:

    标签: c# asp.net drop-down-menu


    【解决方案1】:

    我在代码中发现的是您正在循环遍历通用中继器项目。您正在以 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.
    } 
    

    【讨论】:

    • 这个我没试过,但我觉得 ecoGreen 是对的。虽然“dataItem”可能有点用词不当。
    猜你喜欢
    • 2012-02-02
    • 1970-01-01
    • 2012-02-11
    • 2019-03-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多