Heim  >  Artikel  >  Backend-Entwicklung  >  Eine kurze Diskussion über die DataSource-Eigenschaft in C#-Datenbindungssteuerelementen

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

黄舟
黄舟Original
2017-01-19 11:15:342116Durchsuche

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.
f35d6e602fd7d0f0edfa6f7d103c1b57Binding 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();    
}

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>

2cc198a1d5eb0d3eb508d858c9f5cbdb 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();    
}

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>

5bdf4c78156c7953567bb5a0aef2fc53Bind 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();    
}


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>

23889872c2e8594e0f446a471a78ec4c 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;  
}  
}

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();    
}

Ö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>

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)!


Stellungnahme:
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