привязка данных в asp.net - PullRequest
       10

привязка данных в asp.net

3 голосов
/ 26 октября 2010

Я использую ASP.NET/C# DataList.

 <asp:DataList ID="EquipmentList" RepeatColumns="5".....  

У меня есть следующая строка внутри тега <ItemTemplate>:

 <a href=""`><%# {I want to put something here but dont know how} %> </a>  

В моем коде есть переменная NameValueCollection, которая содержит все строки:

 NameValueCollection myListofStrings = //calling a method here that populates myListofStrings   
this.EquipmentList.DataSource =  myListofStrings;  
this.EquipmentList.DataBind();

Может кто-нибудь сказать мне, как связать эту переменную NameValueCollection с моим тегом DataList в разметке? Также были бы полезны дополнительные знания о том, как связать DataList с DataSet, sqldatareader, IList<>.

Спасибо всем. но сейчас, что я пишу внутри тега, если, скажем, мне нужно привязать переменную 1NameValueCollection1, как в моем случае выше. У него нет свойств или столбцов, поэтому я не могу написать что-то вроде Eval("propertyname"), и этот ответ дал мне большинство из них. Это как я связываю его с массивом строк.

Так что мне теперь писать?

Ответы [ 4 ]

5 голосов
/ 26 октября 2010

Пожалуйста, может кто-нибудь сказать мне, как связать эта переменная NameValueCollection в мой тег datalist в разметке? Также дополнительные знания о том, как связать DataList для набора данных, sqldatareader, IList <> был бы полезен. Thannks

Я объявляю свой List<ComplexObject> в своем коде (скажем ... в методе, прикрепленном к OnClick), а затем я сделаю привязку к данным следующим образом:

private void DoDataGetAndBind() {
  List<ComplexObject> complexObjects = _dataAccessLayer.GetComplexObjectsMethod(parameter1, parameter2, sortParameter);
  datalist1.DataSource = complexObjects;
  datalist1.DataBind();
}

Теперь, пожалуйста, поймите, насколько упрощен мой код, я не проводил никаких проверок на ошибки (например, если база данных была удалена или вы не вернули результатов), и я не определил параметры или ComplexObject (потому что я предполагаю, что вы понимаете как эти вещи работают).

В .aspx страницы я бы тогда определил внутри ItemTemplate полей управления DataList, где I <%# Eval('ComplexObjectFieldOneName') %> или <%# Eval('ComplexObjectFieldTwoName') %> (и т. Д.).

Так дано

public class ComplexObject {
  public string MyFirstField {get;set;}
  public string MySecondField {get;set;}
}

Я бы определил поля в .aspx как <%# Eval('MyFirstField') %> и <%# Eval('MySecondField') %>

Хорошо, это было довольно долго, так что я надеюсь, что это действительно помогло.


Еще один момент: вы также можете использовать ObjectDataSources (или производные классы, такие как SqlDataSource и т. Д.) И выполнять все ссылки на .aspx, предполагая, что классы объектов построены правильно. Что-то, чтобы рассмотреть.

0 голосов
/ 03 апреля 2015
<%# (EquipmentList.DataSource as NameValueCollection)[Container.DataItem as string] %>

Источником данных является фактическая коллекция, к которой вы привязываете, но мы должны преобразовать ее.И, конечно же, Container.DataItem - это КЛЮЧ, в который я преобразую строку, чтобы ее можно было использовать.

0 голосов
/ 26 октября 2010

Привязать источник списка данных к представлению данных или к данным.

Datalist.Datasource = DataView;

   <ITEMTEMPLATE>
    <ASP:LABEL id="lblField" runat="server" Font-Bold="true">
    <%# DataBinder.Eval(Container.DataItem, "DATAITEMNAME") %>
    </ASP:LABEL>
    </ITEMTEMPLATE>
0 голосов
/ 26 октября 2010

<% #%> - это синтаксис привязки данных.

Обычно вы делаете что-то вроде:

<%# Eval("PropertyName") %>

Это определяет одностороннюю привязку к свойству / столбцу с именем PropertyName в вашемисточник данных.

В вашем случае, я думаю, вы можете указать либо Имя, либо Значение, поскольку это открытые свойства NameValueCollection.

Вы также можете выполнить двустороннюю привязку данных, используя:

<%# Bind("PropertyName") %>
...