2012-03-20 14 views
0

私はC#とWebFormsを使用しています。私はこのようなクラスを持っている:Datagrid .Net WebFormsへのオブジェクトの問題バインドリスト

public class Foo 
{ 
     public int _touchID; 
     public string _touchName; 
    } 

その後、私はFooListを返し、私はDataGridにそのリストをバインドするDAOオブジェクトを持っています。

public List<Foo> getFooList() 
    { //get my list and whatnot} 

私はこのような私のasp:DataGridにバインド:aspxページはこのようなものです

TouchGrid.DataSource = dao.getFooList(); 
TouchGrid.DataBind(); 

<asp:DataGrid ID="TouchGrid" runat="server" AutoGenerateColumns="false"> 
    <Columns> 
     <asp:BoundColumn HeaderText="ID" DataField="_touchID"></asp:BoundColumn> 
     <asp:TemplateColumn HeaderText="Touch"> 
      <ItemTemplate> 
        <asp:Label ID="touchName" text='<%#DataBinder.Eval(Container.DataItem, "_touchname") %>' runat="server"/> 
        <%--<div class="touchDescriptionHidden"><%#DataBinder.Eval(Container.DataItem, "_description")%></div>--%> 
      </ItemTemplate> 
     </asp:TemplateColumn> 
    </Columns> 
</asp:DataGrid> 

私は、コードを実行すると、私は

ので、実行時例外を取得

名前を持つフィールドまたはプロパティ選択したデータソースの に「_touchID」が見つかりませんでした。

私はDataItem._touchIDを使用しようとしましたが、それを使って同じエラーが発生しました。私は「知っている私も、私は、これが失敗している理由として、いくつかのヒントを得ることができるかどうかを確認するために、列を自動生成しようとしたが、私は

選択したデータソース

の列を自動生成することができません

を言ってメッセージを取得します私は何かを逃しているが、私は何が正確か分からない。私はDataBindライン上でデバッグするとDataSourceを見れば、私はうまく私のオブジェクトを見ることができます:

TouchGrid.DataSource

[0] - _touchID=1 | _name="stuff" 
[1] - _touchID=2 | _name="otherStuff" 

は、ここでの問題は何ですか?

答えて

2

DataBindingメカニズムはクラスフィールドでは機能しませんが、クラスプロパティでは機能しません。

したがって、フィールドをプロパティに変換する必要があります(これもまた要求されたOOPの原則です)。

public class Foo 
{ 
     public int _touchID; 
     public string _touchName; 
    } 

becomes 

public class Foo 
{ 
     public int TouchID {get; set;} 
     public string TouchName {get; set;} 
    } 
+1

素敵に動作するはずです。私はそれを見逃してしまった。ありがとう。私はできる限り受け入れるだろう。 – Rondel

1
public class Foo 
{ 
    public int TouchID {get; set;} 
    public string TouchName {get; set;} 
} 

また

<asp:Label ID="touchName" 
text='<%# DataBinder.Eval(Container, "DataItem.TouchName") %>' runat="server"/> 

を次のようにデータバインディングを変更。..

+0

お役立ち情報私もそれを試してみましょう。 – Rondel

関連する問題