同様に構造化されたFormViewがいくつかあります。マークアップの重複を避けるために、FormViewを含むマスターページを作成し、FormView内にContentPlaceHolderを配置しました。特定のデータバインドされたコントロール(ページごとに変更される唯一のもの)は、そのマスターページを使用するページにあります。
だから私はこのようなマスターページを持っています:
<%@ master ... %>
...
<form runat=server>
...
<asp:formview runat="server" ... >
<edititemtemplate>
... Lots of common markup ...
<asp:contentplaceholder id='FormRows' runat='server' />
... Lots more common markup ...
</edititemtemplate>
</asp:formview>
...
</form>
そして、次のようなマスターページを使用するページ:
<%@ page masterpagefile="Form.Master" ... %>
<asp:content contentplaceholderid="FormRows" runat="server" >
...
<p>
Field One:
<asp:textbox runat=server text='<%#Bind("Field1")%>' id='Field1' />
</p>
<p>
Field Two:
<asp:textbox runat=server text='<%#Bind("Field2")%>' id='Field2' />
</p>
...
</asp:content>
既存のレコードを使用すると、FormViewはデータバインドされたコントロール(Field1など)を確認し、正しいデータを入力します。ただし、挿入または更新する場合、それらは表示されず、挿入または更新には含まれません。FormView_ItemInserting
イベントでは、はe.Values
空です。同様に、FormView_ItemUpdating
イベントでe.NewValues
は、空です。
それで:
マスターページでFormViewを起動して、ContentPlaceholder内のデータバインドされたコントロールを確認する方法はありますか?
<%#Bind(...)%>
それができない場合、値バッグに手動で追加できるように、データバインドされているコントロールを識別する簡単な方法はありますか?