asp.net DetailsView - Автогенерация столбцов - PullRequest
1 голос
/ 30 марта 2012

У меня есть элемент управления asp DetailsView, который автоматически генерирует поля.

Есть один столбец с идентификатором, который сопоставлен с другой таблицей (внешний ключ).Это отображается в текстовом поле.Я хочу, чтобы этот столбец отображался в виде выпадающего списка, как указано в моем примере кода ниже.Это работает нормально, но во втором столбце все еще отображается текстовое поле с идентификатором.

Мой вопрос: возможно ли использовать автоматическое создание и по-прежнему скрывать столбцы, которые вам не нужны или которые вы хотите изменить?

Я ненавижу писать код для каждого отдельного столбца только потому, что для одного столбца необходимо использовать TemplateField.

DetailsView

<asp:DetailsView ID="DetailsView1" runat="server"
        DefaultMode="Edit" DataSourceID="EntityDataSource1"
        AutoGenerateEditButton="True" AutoGenerateInsertButton="True">
        <Fields>
            <asp:TemplateField HeaderText="Authorization">
                <EditItemTemplate>
                    <asp:DropDownList  ID="DropDownList2" Runat="server" DataSourceID="EntityDataSource2" CssClass="DropDown"
                        DataTextField="Name" DataValueField="AuthenticationId" SelectedValue='<%# bind("AuthenticationId") %>'>
                    </asp:DropDownList>
                </EditItemTemplate>
            </asp:TemplateField>
            <asp
        </Fields>
</asp:DetailsView>

DetailsView DataSource:

<asp:EntityDataSource ID="EntityDataSource1" runat="server" 
        ContextTypeName="EntityNamespace.MyEntity" EnableFlattening="False" 
        EntitySetName="Routes" Include="Authentication"  Where="it.RouteId = @RouteId">
        <WhereParameters>
            <asp:RouteParameter Type="Int32" RouteKey="RouteId" Name="RouteId" />
        </WhereParameters>
</asp:EntityDataSource>

Источник данных выпадающего списка

<asp:EntityDataSource ID="EntityDataSource2" runat="server" 
        ContextTypeName="EntityNamespace.MyEntity" EnableFlattening="False" 
        EntitySetName="Authentications">
</asp:EntityDataSource>

1 Ответ

3 голосов
/ 30 марта 2012

Я думаю, что вы можете. Посмотрите на AutoGenerateRows. На MSDN так написано:

Явно объявленные поля строк могут использоваться в сочетании с автоматически сгенерированные поля строки. Когда оба используются явно объявленные поля строк обрабатываются первыми, а затем автоматически сгенерированные поля строк.

Но вы также должны учитывать, что строки не входят в коллекцию полей

Автоматически созданные поля связанных строк не добавляются в поля коллекция.

Ссылка здесь

...