扩展服务器控件DropDownList-获取ListItemCollection项目ASP.NET

时间:2018-08-21 01:21:59

标签: c# asp.net servercontrols

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

0 个答案:

没有答案