2011-01-03 1 views
0

データグリッドビューメソッドでのデータのバインドの違いは何ですか?データグリッドビューメソッドでデータをバインドする違いは何ですか?

方法1

Text='<%# DataBinder.Eval(Container.DataItem,"UserFirstName")%>' 
      CommandArgument='<%# Eval("UserID") %>' 

方法2

<ItemTemplate> 
    <asp:LinkButton ID="lnkBtnUserName" runat="server" 
    Text='<%# DataBinder.Eval(Container.DataItem,"UserFirstName")%>' 
              CommandArgument='<%# Eval("UserID") %>' OnClick="lnkBtnUserName_Click" /> 
            </ItemTemplate> 

この第1

<asp:TemplateField HeaderText="Employee ID"> 
     <ItemTemplate> 
      <asp:Label ID="lblempid" runat="server" Text='<%# Bind("EmpId.EmpId") %>'></asp:Label> 
     </ItemTemplate> 
</asp:TemplateField> 

手段

Text='<%# Bind("EmpId.EmpId") 

でも説明してください。これはCommandArgument='<%# Eval("UserID")です。

答えて

0

Eval("UserID")などのコールは、TemplateControl.Evalメソッドコールに対応し、それ自体は実際にDataBinder.Eval(GetDataItem(), "UserID")などのコールに変換されます。要約すると、Evalは、DataBinder.Evalの略式構文です。内部的に最初の引数を検査し、その型に基づいて2番目の引数を解決しようとします。たとえば、データ行の場合は列名に解決しようとします普通のオブジェクトの場合は、リフレクションを使用してプロパティ名を解決します。

Bindは、編集時に使用される双方向バインディングになる特別な構文です。つまり、コントロールはデータソースから値を取得し(Evalと同様に)、値をデータソースに戻します(変更された)。 AFAIK、Bindはメソッド呼び出し(Eval)に対応していませんが、ASP.NETコンパイラは双方向データバインディングを保証するために必要なコードを吐き出します。

データバインディング式の概要を参照してください。http://msdn.microsoft.com/en-us/library/ms178366.aspx

関連する問題