asp.net datalist数据绑定

时间:2010-10-26 17:02:02

标签: c# asp.net data-binding collections datalist

我使用的是ASP.NET / C#DataList

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

我在<ItemTemplate&gt;内有以下一行标记:

 <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绑定到DataSetsqldatareaderIList<>的其他知识也会有所帮助。

谢谢大家。但是现在我要在标签内写什么,如果让我说我必须绑定到1NameValueCollection1变量,就像我上面的情况一样。它没有属性或列,所以我不能写Eval("propertyname")之类的东西,这是大多数人给我的答案。就像我将它绑定到一个字符串数组一样。

那我现在要写什么?

4 个答案:

答案 0 :(得分:5)

  

有人可以告诉我如何绑定   这个NameValueCollection变量为   标记中的我的datalist标签?也   关于如何绑定的额外知识   datalist到数据集sqldatareader,   的IList&LT;&GT;会有所帮助。 Thannks

我在我的代码隐藏中声明了我的List<ComplexObject>(比如说​​...在附加到OnClick的方法中)然后我会像这样对它进行数据绑定:

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

现在请理解我的代码是如何简化的,我没有进行任何错误检查(比如,如果数据库丢失或者你没有返回结果)并且我没有定义参数或ComplexObject(因为我认为你理解这些事情是如何运作的。)

在页面的.aspx中,我会在ItemTemplate控件字段的DataList内定义<%# 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上进行所有链接,假设正确构建的对象类。需要考虑的事情。

答案 1 :(得分:0)

&lt;%#%&gt;是数据绑定语法。

您通常会执行以下操作:

<%# Eval("PropertyName") %>

这定义了对数据源中名为PropertyName的属性/列的单向绑定。

在您的情况下,我认为您可以使用Name或Value,因为它们是NameValueCollection的公共属性。

您还可以使用以下方式进行双向数据绑定:

<%# Bind("PropertyName") %>

答案 2 :(得分:0)

将datalist源绑定到数据视图或数据表。

Datalist.Datasource = DataView;

   <ITEMTEMPLATE>
    <ASP:LABEL id="lblField" runat="server" Font-Bold="true">
    <%# DataBinder.Eval(Container.DataItem, "DATAITEMNAME") %>
    </ASP:LABEL>
    </ITEMTEMPLATE>

答案 3 :(得分:0)

<%# (EquipmentList.DataSource as NameValueCollection)[Container.DataItem as string] %>

数据源是您绑定的实际集合,但我们必须转换它。当然,Container.DataItem是KEY,我将其转换为字符串,以便可以使用它。