C# 在中继器控件内获取选定的dropdownlist值
我在一个中继器控件中有dropdownlist,我试图获取该控件的值,并且得到“对象引用未设置为对象的实例”。我不知道还能尝试什么。谢谢 ASPX代码:C# 在中继器控件内获取选定的dropdownlist值,c#,asp.net,drop-down-menu,C#,Asp.net,Drop Down Menu,我在一个中继器控件中有dropdownlist,我试图获取该控件的值,并且得到“对象引用未设置为对象的实例”。我不知道还能尝试什么。谢谢 ASPX代码: <asp:Repeater ID="GeneralRepeater" runat="server" OnItemDataBound="GeneralRepeater_OnItemDataBound" onitemcommand="GeneralRepeater_ItemC
<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.
}
}
我在保存所选值时遇到问题。我在代码中发现,您正在遍历generalrepeater项。您正在以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.
}
我还没试过,但我认为绿色环保是对的。虽然“数据项”可能有点用词不当。