2011-01-20 16 views
1

私は質問が奇妙に言われていることを知っていますが、私は他にそれをどのように言うべきか分かりませんでした。
私はasp.netで "Edit Customer"ページを作成しており、現在の値をすべてPageLoadのTextBoxに入力したいと考えています。データバインディングを使用してこれを行う方法はありますか、DataContextからCustomerを取得して、TextBoxesを行単位で設定する必要がありますか?すなわちTextBoxのデフォルト値をグループとしてバインドする方法はありますか?

firstNameTB.Text = Customer.FirstName; 
lastNameTB.Text = Customer.LastName; 
... 
+0

可能なデュープを:http://stackoverflow.com/questions/4682583/better-way-to-populate-form-fields- from-sql/4682940#4682940 –

答えて

1

あなたはFormViewコントロールを使用して、コントロールにデータをバインドできます。 MSDN:Data-Binding Expressions Overview

行の更新ボタンをクリックすると、バインドの構文を使用してバインドされた各コントロールプロパティの値が抽出され、更新操作のためにデータソースコントロールに渡されます。

<asp:FormView ID="FormView1" 
     DataSourceID="SqlDataSource1" 
     DataKeyNames="CustomerID"  
     RunAt="server"> 

<EditItemTemplate> 
    <table> 
    <tr> 
     <td align=right> 
     <b>Customer ID:</b> 
     </td> 
     <td> 
     <%# Eval("CustomerID") %> 
     </td> 
    </tr> 
    <tr> 
     <td align=right> 
     <b>First Name:</b> 
     </td> 
     <td> 
     <asp:TextBox ID="EditFirstNameTextBox" RunAt="Server" 
      Text='<%# Bind("FirstName") %>' /> 
     </td> 
    </tr> 
    <tr> 
     <td align=right> 
     <b>Last Name:</b> 
     </td> 
     <td> 
     <asp:TextBox ID="EditLastNameTextBox" RunAt="Server" 
      Text='<%# Bind("LastName") %>' /> 
     </td> 
    </tr> 
    <tr> 
     <td colspan="2"> 
     <asp:LinkButton ID="UpdateButton" RunAt="server" 
      Text="Update" CommandName="Update" /> 
     &nbsp; 
     <asp:LinkButton ID="CancelUpdateButton" RunAt="server" 
      Text="Cancel" CommandName="Cancel" /> 
     </td> 
    </tr> 
    </table> 
</EditItemTemplate>    
</asp:FormView> 
+1

実際には、FormViewは必要ありません。データバインディング式をプロパティ(Label、Textプロパティ、TextBoxなどのTextプロパティ)に割り当て、周囲のコントロールが何らかの形でLifecycle内の.DataBind()を受け取るようにしてください。 – citronas

+0

実際には、OPは '顧客の編集'ページを作成したいのでFormViewを述べました。したがって、私は彼がFormView/DetailsViewコントロールを知らないことを前提としていました。 –

関連する問題