У меня есть проблемы с ASPxGridLookup
. Для того ASPxGridLookup
в деталях мы создаем похожий кодASPxGridLookup: автоматический поиск значений из дочерних таблиц
<dx:ASPxGridView ID="gvTable" ClientInstanceName="grid" runat="server" DataSourceID="dataSource"
AutoGenerateColumns="false" Width="100%" KeyFieldName="ID">
<Columns>
<dx:GridViewCommandColumn VisibleIndex="0">
<EditButton Visible="true" />
</dx:GridViewCommandColumn>
<dx:GridViewDataTextColumn FieldName="ID" Caption="ID" Name="ID">
</dx:GridViewDataTextColumn>
<dx:GridViewDataColumn FieldName="ItemID" VisibleIndex="2">
<EditItemTemplate>
<dx:ASPxGridLookup ID="GridLookup" runat="server" SelectionMode="Single" DataSourceID="dataSource1"
KeyFieldName="ID" Width="250px" TextFormatString="{0}" MultiTextSeparator=", " Value='<%# Bind("ItemID") %>'
AutoGenerateColumns="true">
<GridViewProperties>
<Settings ShowFilterRow="True" />
</GridViewProperties>
</dx:ASPxGridLookup>
</EditItemTemplate>
</dx:GridViewDataColumn>
<dx:GridViewDataTextColumn FieldName="Title" Caption="Title" Name="Title">
</dx:GridViewDataTextColumn>
</Columns>
<Settings ShowFilterRow="True" ShowFilterRowMenu="true" />
<SettingsEditing PopupEditFormWidth="600px" />
</dx:ASPxGridView>
<asp:SqlDataSource ID="dataSource" runat="server" ConnectionString="<%$ ConnectionStrings:connectionString%>"
SelectCommand="SELECT * FROM [Abbreviation]"></asp:SqlDataSource>
<asp:SqlDataSource ID="dataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:connectionString%>"
SelectCommand="SELECT * FROM [Item]"></asp:SqlDataSource>
Для инициализации комбинированного окна мы используем следующий код
Value = ' <% # Bind ("ItemID") %>'
У меня есть для создания таблицы и поиска динамически из программы.
общественный класс LookupTemplate: ITemplate { public ASPxGridLookup lookup {get; задавать; }
public LookupTemplate(ASPxGridLookup lookup)
{
this.lookup = lookup;
}
#region Implementation of ITemplate
public void InstantiateIn(Control container)
{
container.Controls.Add(lookup);
}
#endregion
}
Я генерирую таблицу, добавляю столбцы и в одну из них. Я должен добавить свой поиск.
GridViewDataColumn col = new GridViewDataColumn
{
FieldName = field.Name,
Caption = field.Caption,
Name = field.Name
};
SqlDataSource sqlSource = new SqlDataSource("SELECT * FROM [Item]")
{
ID = "dataSource1";
};
dataSources.DataSources.Add(sqlSource);
ASPxGridLookup lookup = new ASPxGridLookup
{
SelectionMode = GridLookupSelectionMode.Single,
KeyFieldName = "ID",
AutoGenerateColumns = true
};
lookup.GridViewProperties.Settings.ShowFilterRow = true;
lookup.TextFormatString = "{0}";
lookup.Value = "Value='<%# Bind(\"ItemId\") %>'";
LookupTemplate template = new LookupTemplate(lookup);
col.EditItemTemplate = template;
gvTable.Columns.Add(col);
Когда пользователь нажимает на редактирование, я получаю событие после обратной связи. Я формирую все динамически снова, и я делаю разумные действия (я привожу все данные в viewstate, а затем беру оттуда) Но при открытии списка деталей поле со списком остается пустым (без значения поля из строки). Если я попытаюсь открыть поле со списком - я получаю нужный стол.
Как связать значение в ASPxGridLookup
combo box?