在detailsview
中,我扩展了dropdownlist
服务器控件,称为ZZZZDropDown。问题在于,base.Items
在扩展服务器控件被调用时为空。所以我的逻辑失败了,因为它要求Items具有来自DataSourceId的数据。我可以确认,是的,查询中正在返回数据。
这是 DetailsView
的代码<asp:DetailsView ID="ZZZZDV" runat="server" Width="100%" AutoGenerateRows="False" DataKeyNames="ZZZ" DataSourceID="ZZZDS">
<Fields>
<asp:TemplateField HeaderText="Assigned To" SortExpression="AssignedTo">
<EditItemTemplate>
<asp:ZZZZDropDown ID="DropDownList2" runat="server" DataSourceID="ZZZZDS" DataTextField="Employee" DataValueField="ZZZZEmpID" SelectedValue='<%# Bind("ZZZZEmployeeID") %>'>
</asp:ZZZDropDown>
</EditItemTemplate>
.......
这是扩展服务器控制
的代码public class ZZZZDropDown : DropDownList
{
public override string SelectedValue
{
get { return base.SelectedValue; }
set
{
try
{
base.Items.FindByValue(value).Selected = true;
}
catch
{
using (EntitiesModel ZZZZ = new EntitiesModel())
{
var Emp = (from emp in ZZZ.ZZZZZ where emp.EmployeeID == value.ToInt() select emp).FirstOrDefault();
base.Items.Add(Emp != null ? new ListItem(Emp.ZZZZZZ + ", " + Emp.ZZZZZZ, value) : new ListItem("Archived Employee", value));
}
base.Items.FindByValue(value).Selected = true;
}
}
}
我的问题是,在运行ListItemCollection
时如何获得Items
的{{1}}