我使用的是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
绑定到DataSet
,sqldatareader
,IList<>
的其他知识也会有所帮助。
谢谢大家。但是现在我要在标签内写什么,如果让我说我必须绑定到1NameValueCollection1变量,就像我上面的情况一样。它没有属性或列,所以我不能写Eval("propertyname")
之类的东西,这是大多数人给我的答案。就像我将它绑定到一个字符串数组一样。
那我现在要写什么?
答案 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,我将其转换为字符串,以便可以使用它。