У меня есть DataGrid, который выглядит так (здесь немного упрощенно):
<asp:DataGrid ID="grdQuotas" runat="server" AutoGenerateColumns="False">
<HeaderStyle CssClass="quotas-header" />
<Columns>
<asp:TemplateColumn>
<HeaderTemplate>
Max order level</HeaderTemplate>
<ItemTemplate>
<asp:DropDownList ID="ddlMaxOrderLevel" runat="server" DataSourceID="xdsOrderLevel"
DataTextField="Text" DataValueField="Value" SelectedValue='<%# Bind("MaxOrderLevel") %>'>
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
<asp:XmlDataSource ID="xdsOrderLevel" runat="server" DataFile="~/App_Data/OrderLevels.xml">
</asp:XmlDataSource>
В моем обработчике событий Page_Load
я создаю DataTable
, содержащий значения по умолчанию и DataBind
, передающий его в DataGrid
.
Проблема в том, что это происходит до того, как DropDownList
ddlMaxOrderLevel был привязан к DataSource
, поэтому я получаю сообщение об ошибке выполнения, сообщающее, что SelectedValue
не может быть установлен.
Если бы ddlMaxOrderLevel не было в DataGrid
, я мог бы просто вызвать DataBind()
на нем. Однако я не могу сделать это в этом сценарии - так как он находится в ItemTemplate
.
Кто-нибудь может предложить обходной или альтернативный подход?