プログラミングが特定の段階に達し、これ以上改善するのが非常に難しい場合は、基本に立ち返って考えてみると、新たな利点が得られるかもしれません。また、孔子の言う「論」を真に理解できるかもしれません。本当の意味での「温故知新」。
一般的に使用される C# データ バインディング コントロールには、Repeater、DataList、GridView、DetailsView などが含まれます。ここでは、Repeater を使用して問題を簡単に説明します。
このプロパティを使用して、Repeater コントロールに入力するために使用されるデータ ソースを指定します。 DataSource には、データベースへのアクセスに使用される System.Data.DataView、System.Collections.ArrayList、System.Collections.Hashtable、配列、または IListSource オブジェクトなどの System.Collections.IEnumerable オブジェクトを指定できます。
一般的に使用されるデータ ソース:
DataTable
DataView
DataSet
IListSource インターフェイスを実装する任意のコンポーネント
IList インターフェイスを実装する任意のコンポーネント
注:
厳密に型指定されたオブジェクトの配列にバインドするには、オブジェクト タイプに以下が含まれている必要がありますパブリック属性。
DataSource の具体的なアプリケーションを、いくつかの簡単な例を通して以下に紹介します。
<1>DataTable のバインドには、通常、データベースからデータを取得して、それを直接バインドすることが含まれます。特定のデータベース操作ロジックは提供されなくなりました。誰もがよく知っているはずです。 DataView のバインドはこれと似ています。
プログラムコード
privatevoidBindData() { //通过业务逻辑,直接调用数据库中的数据 DataTablenTable=getTable(); Repeater1.DataSource=nTable; Repeater1.DataBind(); }
C#データバインディング制御プログラムコード
<asp:RepeaterIDasp:RepeaterID="Repeater1"runat="server"> <HeaderTemplate> <table> <tr> <thscopethscope="col"> 姓名th> <th> 年龄th> <tr> <HeaderTemplate> <ItemTemplate> <tr> <td> <%#Eval("Key")%> <td> <td> <%#Eval("value")%> <td> <tr> <ItemTemplate> <FooterTemplate> <table><FooterTemplate> <asp:Repeater>
ArrayList
C#データバインディング制御プログラムコード
privatevoidBindData() { ArrayListlist=newArrayList(); list.Add("Jim"); list.Add("Tom"); list.Add("Bluce"); list.Add("Mary"); Repeater1.DataSource=list; Repeater1.DataBind(); }
プログラムコード
<asp:RepeaterIDasp:RepeaterID="Repeater1"runat="server"> <HeaderTemplate><table><tr><thscopethscope="col">姓名<th><tr><HeaderTemplate> <ItemTemplate><tr><td><%#Container.DataItem%><td><tr><ItemTemplate> <FooterTemplate><table><FooterTemplate> <asp:Repeater>
Dictionary
C#データバインディング制御プログラムコード
privatevoidBindData() { Dictionary<string,int>dic=newDictionary<string,int>(); dic.Add("Jim",21); dic.Add("Tom",26); dic.Add("Bluce",33); dic.Add("Mary",18); Repeater1.DataSource=dic; Repeater1.DataBind(); }
HTMLコード
プログラムコード
<asp:RepeaterIDasp:RepeaterID="Repeater1"runat="server"> <HeaderTemplate><table><tr><thscopethscope="col">姓名<th><th>年龄<th><tr><HeaderTemplate> <ItemTemplate><tr><td><%#Eval("Key")%>td><td><%#Eval("value")%><td><tr><ItemTemplate> <FooterTemplate><table><FooterTemplate> <asp:Repeater>
2 つのパブリック プロパティを含む単純なユーザー クラス。
プログラムコード
usingSystem; usingSystem.Data; /// ///SummarydescriptionforUser /// publicclassUser { privatestring_Name; publicstringName { get{return_Name;} set{_Name=value;} } privateint_Age; publicintAge { get{return_Age;} set{_Age=value;} } publicUser() { // //TODO:Addconstructorlogichere // } publicUser(stringname,intage) { _Name=name; _Age=age; } }
IList
プログラムコード
privatevoidBindData() { Useruser1=newUser("Jim",21); Useruser2=newUser("Tom",23); Useruser3=newUser("Bluce",33); Useruser4=newUser("Mary",18); IList<User>list=newList<User>(); list.Add(user1); list.Add(user2); list.Add(user3); list.Add(user4); Repeater1.DataSource=list; Repeater1.DataBind(); }
C#データバインディングコントロールプログラムコード
<asp:RepeaterIDasp:RepeaterID="Repeater1"runat="server"> <HeaderTemplate> <table> <tr> <thscopethscope="col"> 姓名th> <th> 年龄<th> <tr> <HeaderTemplate> <ItemTemplate> <tr> <td> <%#Eval("Name")%> <td> <td> <%#Eval("Age")%> <td> <tr> <ItemTemplate> <FooterTemplate> <table><FooterTemplate> <asp:Repeater>