关于数据绑定到Ilist<string>的问题 我有个一个GridView 其中的一列是BoundField,我现在将它绑定到一个IList<string>,但是表格里不显示,应该如何设置Datafield? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 public class Test{ public string StringText{get;set;}}IList<Text> 绑的是属性. 嗯IList<自定义类>是有属性的,但是现在得到一个IList<string>,我不想再新生成一个自定义类型数组或者其他复杂类型数组,不知道绑定到基本类型数组有没有提供方法? <%# Container.DataItem %> 额 多谢 不过还有一点问题 我这样写是可以的:<asp:GridView ID="GridView1" AutoGenerateColumns="false" runat="server" BackColor="Blue" Height="133px" Width="128px"> <Columns> <asp:TemplateField HeaderText="words"> <ItemTemplate> <asp:Label Text='<%#Container.DataItem %>' runat="server" /> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView>可是这样写就不行:<asp:GridView ID="GridView1" AutoGenerateColumns="false" runat="server" BackColor="Blue" Height="133px" Width="128px"> <Columns> <asp:BoundField DataField="DataItem" /> </Columns> </asp:GridView>这是为什么? Container.DataItem 代表的是里面的数据项(具体的一个对象),并不是数据项里具体的属性比如你绑定的是FileInfo的数组, 那么要写成<asp:Label Text='<%# (Container.DataItem as System.IO.FileInfo).Name %>' runat="server" />或者<asp:Label Text='<%# Eval("Name") %>' runat="server" /> 唔,那就是说只能使用TemplateField而无法使用BoundField了? BoundField 必须要通过反射找到 数据项的属性,基本数据类型是没有属性的。GridView 设置 自动生成字段 是可以绑定 IList<string> 或 IList<int> 这样的基本数据类型的。Container 是数据绑定控件的 内部容器对象,实现了 IDataItemContainer 接口,对应的 GridView 的 GridViewRow DataList 的 DataListItem Repeater 的 RepeaterItem就是绑定表达式中的 Container在做高效数据绑定时,一般都使用 TemplateField + ((Type)Container.DataItem).Property 进行强制类型转换,不用到 Eval 或 Bind (这两个要用到反射)ASP.NET的数据绑定原理挺复杂的,受知识所限,我了解的仅限上述内容。楼主有机会不妨将 ASP.NET 的反编译源码看看,可能会了解更多。 坑爹呐这是!!!先到先得一次性给 Datagridview获取单元格内的控件名 还是JS问题:JS对ASP.NET的Radiobutton调用 Microsoft Visual Studio 2008 批量转换项目,批量代码格式化 怎么判断 sqlite 数据库设没设密码? 关于BYTE数组地址的问题? 急寻高手!在断点调试时,变量前为什么多了一个@? 请高手来帮小弟(XML的问题)急啊!!高分相送! 虽然快没分了,但还是要问啊:关于窗口间传值,谢! 求两个简单的正则表达式 谢谢了 新手跪求数据库查询语句,急!!!! 请教如何获取此段XML数据
{
public string StringText{get;set;}
}IList<Text> 绑的是属性.
嗯IList<自定义类>是有属性的,但是现在得到一个IList<string>,我不想再新生成一个自定义类型数组或者其他复杂类型数组,不知道绑定到基本类型数组有没有提供方法?
<%# Container.DataItem %>
额 多谢 不过还有一点问题
我这样写是可以的:
<asp:GridView ID="GridView1" AutoGenerateColumns="false" runat="server" BackColor="Blue"
Height="133px" Width="128px">
<Columns>
<asp:TemplateField HeaderText="words">
<ItemTemplate>
<asp:Label Text='<%#Container.DataItem %>' runat="server" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>可是这样写就不行:
<asp:GridView ID="GridView1" AutoGenerateColumns="false" runat="server" BackColor="Blue"
Height="133px" Width="128px">
<Columns>
<asp:BoundField DataField="DataItem" />
</Columns>
</asp:GridView>
这是为什么?
或者
<asp:Label Text='<%# Eval("Name") %>' runat="server" />
DataList 的 DataListItem
Repeater 的 RepeaterItem就是绑定表达式中的 Container在做高效数据绑定时,一般都使用 TemplateField + ((Type)Container.DataItem).Property 进行强制类型转换,不用到 Eval 或 Bind (这两个要用到反射)ASP.NET的数据绑定原理挺复杂的,受知识所限,我了解的仅限上述内容。
楼主有机会不妨将 ASP.NET 的反编译源码看看,可能会了解更多。