次のような 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
.
問題は、ddlMaxOrderLevelがその にバインドされる前にこれが行われているため、を設定できないことを示す実行時エラーが発生することです。DropDownList
DataSource
SelectedValue
ddlMaxOrderLevelが含まれていない場合は、それDataGrid
を呼び出すことができDataBind()
ます。ただし、このシナリオではそれを行うことはできませんItemTemplate
。
誰かが回避策または代替アプローチを提案できますか?