Asp.net DetailsView\u ModeChanged方法在使用FindControl方法的特定模式下找不到控件

Asp.net DetailsView\u ModeChanged方法在使用FindControl方法的特定模式下找不到控件,asp.net,data-binding,detailsview,Asp.net,Data Binding,Detailsview,我有一个关于商店产品的详细视图控制 当我点击DetailsView控件的“编辑”按钮时,我想绑定一个下拉列表来列出产品类别,并在其中选择当前的产品类别 我使用“ModeChanged”方法选择当前产品类别,如下所示: 编辑:标记: <asp:DetailsView ID="dtlProduct" runat="server" DataSourceID="ProductDetailsLinqDataSource" AutoGenerateRows="False"

我有一个关于商店产品的详细视图控制

当我点击DetailsView控件的“编辑”按钮时,我想绑定一个下拉列表来列出产品类别,并在其中选择当前的产品类别

我使用“ModeChanged”方法选择当前产品类别,如下所示:

编辑:标记:

<asp:DetailsView ID="dtlProduct" runat="server" 
        DataSourceID="ProductDetailsLinqDataSource" AutoGenerateRows="False" 
        DataKeyNames="ProductID">

        <Fields>
            <asp:BoundField DataField="ProductName"
                SortExpression="ProductName" />
            <asp:TemplateField>
            <ItemTemplate>
                <asp:Label Text='<%# Eval("ProductCategory.CategoryName") %>' runat="server" />
            </ItemTemplate>
            <EditItemTemplate>
                <asp:DropDownList ID="ddlCategory" runat="server" DataSourceID="LDS_ProductsCategories" 
                    DataTextField="CategoryName" DataValueField="CategoryID" Width="200px">
                </asp:DropDownList>
                <asp:LinqDataSource ID="LDS_ProductsCategories" runat="server" 
                    ContextTypeName="ProductsDataClassesDataContext" 
                    Select="new (CategoryID, CategoryName)" TableName="ProductCategories">
                </asp:LinqDataSource>
            </EditItemTemplate>
            </asp:TemplateField>
        </Fields>
    </asp:DetailsView>
FindControl方法找不到“ddlcontrole”(返回null),尽管它存在于EditTemplateField中

我不知道出了什么问题

我想使用“DropDownList的PreRender”事件来实现我的目标,但我想知道是什么错了


非常感谢……

看起来您需要先找到您的编辑容器。看看你的问题,如果我理解正确的话,我可能会建议使用Databound事件并将下拉列表绑定到那里

查看此链接:

我还认为您应该移动ProductCategories数据源:

  <asp:LinqDataSource ID="LDS_ProductsCategories" runat="server" 
                    ContextTypeName="ProductsDataClassesDataContext" 
                    Select="new (CategoryID, CategoryName)" TableName="ProductCategories">
                </asp:LinqDataSource>


到编辑模板之外(它可以存在于detailsview之外)

看起来您需要先找到您的编辑容器。看看你的问题,如果我理解正确的话,我可能会建议使用Databound事件并将下拉列表绑定到那里

查看此链接:

我还认为您应该移动ProductCategories数据源:

  <asp:LinqDataSource ID="LDS_ProductsCategories" runat="server" 
                    ContextTypeName="ProductsDataClassesDataContext" 
                    Select="new (CategoryID, CategoryName)" TableName="ProductCategories">
                </asp:LinqDataSource>


到编辑模板之外(它可以存在于detailsview之外)

谢谢,我怎样才能找到编辑容器?我已经添加了asp.net标记,您能指导我吗?谢谢,我怎样才能找到编辑容器?我已经添加了asp.net标记,您能指导我吗?