Eine kurze Diskussion über die DataSource-Eigenschaft in C#-Datenbindungssteuerelementen

黄舟
Freigeben: 2017-01-19 11:15:34
Original
2115 Leute haben es durchsucht

Manchmal, wenn Sie in einer bestimmten Phase der Programmierung angekommen sind und es sehr schwierig ist, sich weiter zu verbessern, können Sie genauso gut einen Blick auf die grundlegenden Dinge werfen. Vielleicht gewinnen Sie neue Vorteile, und vielleicht können Sie wirklich verstehen, was Konfuzius sagte: „Die wahre Bedeutung von „die Vergangenheit Revue passieren lassen und das Neue lernen“.
Zu den häufig verwendeten C#-Datenbindungssteuerelementen gehören: Repeater, DataList, GridView, DetailsView usw. Hier werde ich Repeater verwenden, um das Problem kurz zu erläutern.
Verwenden Sie dieses Attribut, um die Datenquelle anzugeben, die zum Füllen des Repeater-Steuerelements verwendet wird. DataSource kann ein beliebiges System.Collections.IEnumerable-Objekt sein,
wie System.Data.DataView, System.Collections.ArrayList, System.Collections.Hashtable, Array oder IListSource-Objekt, das für den Zugriff auf die Datenbank verwendet wird.
Häufig verwendete Datenquellen:
Eine Datentabelle
Eine Datenansicht
Ein DataSet
Jede Komponente, die die IListSource-Schnittstelle implementiert
Jede Komponente, die die IList-Schnittstelle implementiert
Hinweis:
Wenn eine Bindung an ein stark typisiertes Array von Objekten erfolgen soll, muss der Objekttyp öffentliche Eigenschaften enthalten.
Im Folgenden werden anhand einiger einfacher Beispiele die spezifischen Anwendungen von DataSource vorgestellt.
<1>Binding DataTable ruft normalerweise Daten aus der Datenbank ab und bindet sie dann direkt. Die spezifische Datenbankbetriebslogik wird nicht mehr bereitgestellt. Jeder muss damit bestens vertraut sein. Das Binden einer DataView ähnelt diesem.
Programmcode

privatevoidBindData()    
{    
//通过业务逻辑,直接调用数据库中的数据    
DataTablenTable=getTable();    
  
Repeater1.DataSource=nTable;    
Repeater1.DataBind();    
}
Nach dem Login kopieren

HTML-Code
C#-Datenbindungssteuerungsprogrammcode

<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>
Nach dem Login kopieren

<2> Binding Array, ArrayList, List, eindimensionales Array und so weiter, das einfache Daten speichert.
ArrayList
C#-Datenbindungssteuerungsprogrammcode

privatevoidBindData()    
{    
ArrayListlist=newArrayList();    
list.Add("Jim");    
list.Add("Tom");    
list.Add("Bluce");    
list.Add("Mary");    
  
Repeater1.DataSource=list;    
Repeater1.DataBind();    
}
Nach dem Login kopieren

HTML-gerechte Änderungen
Programmcode

<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>
Nach dem Login kopieren

<3>Bind Dictionary, HashTable
Wörterbuch
C#-Datenbindungssteuerungsprogrammcode

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();    
}
Nach dem Login kopieren


HTML-Code
Programmcode

<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>
Nach dem Login kopieren

<4> Bindungsobjektsammlung, IList et al. Dies ist sehr nützlich, wenn wir Daten aus der Datenbank abrufen. Um den Betrieb zu erleichtern, müssen diese Objekte jedoch manchmal in Form einer Liste angezeigt werden Lösung: Objektkonvertierung Für DataTable besteht die andere darin, die Datenbank direkt aufzurufen. Diese beiden Optionen sind nicht ideal. Und hier ist die Objektsammlung direkt an die Datenanzeigesteuerung gebunden, was für mich einen Ausweg aufzeigt. Tatsächlich wird dies in PetShop4.0 zum Binden von ICollection oder IList verwendet. Einfach und klar.
Eine einfache Benutzerklasse, die zwei öffentliche Eigenschaften enthält.
Programmcode

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;  
}  
}
Nach dem Login kopieren

Bindungsobjektsammlung:
IList
Programmcode

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();    
}
Nach dem Login kopieren

Öffentliche Eigenschaften des entsprechenden Repeater-Bindungsobjekts:
C#-Daten Code des Bindungssteuerungsprogramms

<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>
Nach dem Login kopieren

Das Obige ist der Inhalt der DataSource-Eigenschaft in der C#-Datenbindungssteuerung. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!