2012-03-29 3 views
1

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

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

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

Мне не нравится писать код для каждого отдельного столбца только потому, что одному столбцу нужно использовать 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> 

DROPDOWNLIST DataSource

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

ответ

3

Я думаю, что вы можете. Взгляните на AutoGenerateRows. Это говорит так: msdn:

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

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

Автоматически генерируемые поля границы строки не добавлены к коллекции Fields .

Ссылка here

+0

Я прочитал статью, и это не означает, что я могу делать то, что я хочу. Поэтому я просто собираюсь предположить, что это невозможно сделать, и что я должен сам связывать все поля. + 1 для усилий – PsychoDUCK