0

好吧,碰巧我是 asp.net 的新手,并试图创建一个以编程方式声明其源的 Grid。

在这个过程中,我遇到了 2 个标签FieldsColumns。谁能告诉我他们有什么不同?

编辑:我浏览了一些示例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>

看起来很相似还是只是我??!

感谢您的帮助。

4

3 回答 3

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>

如您所见,aTemplateField还可以包含另一个嵌套的 GridView。

于 2012-10-17T09:48:51.353 回答
1

我是瞎还是笏!

在我发布了这个问题后,我回到了我的绘图板,结果发现,在 asp:GridView 中没有 Fields 标记,对吧?!

请让我知道这是否是真实的人(并证明我很傻!)

于 2012-10-17T10:04:43.333 回答
1

暂时搁置这个特定的控制,从一般计算机科学的角度来看这个可能会有所帮助。

在经典编程(任何语言)中,字段将是行和列的交集——一段离散的数据。例如,如果一个表有 20 行包含名字和姓氏的数据,如果您转到第 19 行并查看“名字”列,您就会得到一个 FIELD。也许它包含离散数据“JOHN”。

COLUMNS 将是类似数据的集合——在这个例子中,你有两列“名字”和“姓氏”。列将具有诸如数据类型、最大长度、约束(空值可以吗?等)等属性。

有些人可能会对我的定义提出质疑,并说 COLUMN 中的单个单元格将被称为 FIELD。听到这个并不少见。我会回答,对于具有单列的表,尤其如此 :-) 但要点是:COLUMNS 通常是用于容纳更小、更离散的项目(例如 FIELDS)的容器。FIELDS 通常指的是单个数据,例如您可以在数据库表中的行和列的交点处找到的数据。

于 2014-03-26T15:36:47.473 回答