好吧,碰巧我是asp.net的新手并试图创建一个以编程方式声明源的Grid。
在此过程中,我遇到了2个标签字段和列。谁能告诉我他们有什么不同?
编辑:我浏览了一些示例 MSDN 示例,而且我可以告诉我,在我看来它们可以互换使用(尽管我有一种感觉不是真!)。
检查出来:
<asp:GridView ID="GridView1" runat="server"
AutoGenerateColumns="False" DataKeyNames="EmployeeID" DataSourceID="ObjectDataSource1">
<Columns>
<asp:BoundField DataField="LastName" HeaderText="LastName"
SortExpression="LastName" />
<asp:BoundField DataField="FirstName" HeaderText="FirstName"
SortExpression="FirstName" />
<asp:BoundField DataField="Title" HeaderText="Title"
SortExpression="Title" />
<asp:BoundField DataField="HireDate" HeaderText="HireDate"
SortExpression="HireDate" />
</Columns>
</asp:GridView>
然后有:
<asp:GridView ID="GridView1" runat="server" AllowPaging="True"
AutoGenerateRows="False" DataKeyNames="ProductID"
DataSourceID="ObjectDataSource1" EnableViewState="False">
<Fields>
<asp:BoundField DataField="ProductName" HeaderText="Product"
SortExpression="ProductName" />
<asp:BoundField DataField="CategoryName"
HeaderText="Category"
ReadOnly="True" SortExpression="CategoryName" />
<asp:BoundField DataField="SupplierName"
HeaderText="Supplier"
ReadOnly="True" SortExpression="SupplierName" />
<asp:BoundField DataField="QuantityPerUnit"
HeaderText="Qty/Unit" SortExpression="QuantityPerUnit" />
<asp:BoundField DataField="UnitPrice"
DataFormatString="{0:c}"
HeaderText="Price"
HtmlEncode="False" SortExpression="UnitPrice" />
</Fields>
</asp:GridView>
看起来很相似或只是我吗??!
感谢您的帮助。
答案 0 :(得分:2)
Columns
只是
TemplateFields
包含您想要的任何控件或BoundFields
所以Columns
包含了GridView中的字段列表。
<Columns>
<asp:Boundfield datafield="StudentID"
readonly="true"
headertext="Student ID"/>
<asp:TemplateField HeaderText="Student" HeaderStyle-HorizontalAlign="Left">
<ItemTemplate>
<asp:label runat="server" Font-Bold="true" ID="LblStudent" Text='<%# Bind("Student") %>'></asp:label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Inner Grid">
<ItemTemplate>
<asp:GridView ID="Grid2" AutoGenerateColumns="false" runat="server" GridLines="None" Width="300">
<RowStyle CssClass="GridViewRowStyle" />
<AlternatingRowStyle CssClass="GridViewAlternatingRowStyle" />
<HeaderStyle CssClass="GridViewHeaderStyle" />
<SelectedRowStyle BackColor="Aqua" />
<Columns>
<asp:TemplateField HeaderText="Student" HeaderStyle-HorizontalAlign="Left">
<ItemTemplate>
<asp:label runat="server" Font-Bold="true" ID="LblStudent" Text='<%# Bind("Student") %>'></asp:label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</ItemTemplate>
</asp:TemplateField>
</Columns>
如您所见,TemplateField
还可以包含另一个嵌套的GridView。
答案 1 :(得分:1)
我是瞎眼还是瞎眼!
在我发布这个问题后,我回到了我的绘图板,结果发现,asp:GridView中没有Fields标签,对吧?!
如果这是真人,请告诉我(并证明我很傻!)
答案 2 :(得分:1)
暂时忽略这个特定的控件,从一般的计算机科学角度来看这可能会有所帮助。
在经典编程(ANY LANGUAGE)中,FIELD将是行和列的交叉 - 一段独立的数据。例如,如果一个表有20行包含名字和姓氏的数据,那么如果你去了第19行并查看了&#34;名字&#34;专栏,你有一个FIELD。也许它包含离散数据&#34; JOHN&#34;。
然后COLUMNS将是相似数据的集合 - 在这个例子中,你有两列&#34;名字&#34;和&#34;姓氏&#34;。列将具有诸如数据类型,最大长度,约束(可以为空等等)等属性。
有些人可能会对我的定义嗤之以鼻,并说COLUMN中的单个单元格将被称为FIELD。听到这种情况并不罕见。我会回答说,对于一个单列的表,它尤其如此:-)但是要点是:COLUMNS通常是容器,用于更小,更离散的项目,如FIELDS。 FIELDS通常引用单个数据,例如您在数据库表的行和列的交叉点找到。