C# 之间的差异<;字段>;及<;栏目>;在<;asp:GridView>;

C# 之间的差异<;字段>;及<;栏目>;在<;asp:GridView>;,c#,asp.net,gridview,C#,Asp.net,Gridview,碰巧我是asp.net的新手,试图创建一个网格,其源代码是通过编程声明的 在这个过程中,我遇到了两个标签字段和列。谁能告诉我他们有什么不同吗 编辑:我浏览了一些示例MSDN示例,尽管我能告诉大家,在我看来它们可以互换使用(尽管我觉得这不是真的!) 看看这个: <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="EmployeeID" DataSourceID="

碰巧我是asp.net的新手,试图创建一个网格,其源代码是通过编程声明的

在这个过程中,我遇到了两个标签字段。谁能告诉我他们有什么不同吗

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

看起来很像,还是只有我


感谢您的帮助。

Columns
只是字段的周围标记,这些字段是

  • TemplateFields
    带有您想要的任何控件,或
  • 自动创建的边界字段
因此,
将字段列表括在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>


正如您所看到的,一个
模板字段
也可以包含另一个嵌套的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>
  • TemplateFields
    带有您想要的任何控件,或
  • 自动创建的边界字段
因此,
将字段列表括在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。

我是盲的还是湿的

<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>
在我发布了这个问题之后,我回到我的绘图板,结果是,asp:GridView中没有字段标记,对吗

请务必让我知道这是不是真的人(并证明我很傻)

我是瞎子还是瞎子

在我发布了这个问题之后,我回到我的绘图板,结果是,asp:GridView中没有字段标记,对吗


请务必让我知道这是否是真实的人(并证明我愚蠢)

暂时把这个特殊的控件放在一边,从一般计算机科学的角度来看这可能会有所帮助

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

列将是相似数据的集合——在本例中,有两列“firstname”和“lastname”。列将具有诸如数据类型、最大长度、约束(空值可以吗?)等属性


有些人可能会质疑我的定义,说一列中的单个单元格将被称为字段。听到这些并不罕见。我的回答是,对于一个只有一列的表,这一点尤其正确:-),但要点是:列通常是更小、更离散的项(如字段)的容器。字段通常是指单个数据段,如数据库表中行和列的交叉点。

暂时将此特定控件放在一边,从一般计算机科学的角度来看可能会有所帮助

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

列将是相似数据的集合——在本例中,有两列“firstname”和“lastname”。列将具有诸如数据类型、最大长度、约束(空值可以吗?)等属性


有些人可能会质疑我的定义,说一列中的单个单元格将被称为字段。听到这些并不罕见。我的回答是,对于一个只有一列的表,这一点尤其正确:-),但要点是:列通常是更小、更离散的项(如字段)的容器。字段通常指的是一段数据,例如数据库表中行和列的交叉点。

您的解释本身就很好,但如果您看到我的编辑,我还想知道更多。@keybrbdbasher:从没听说过
标记。你在哪里看到过它?我的坏蒂姆,在详细视图中看到了标记,并假设(错误!)它也在GridView中可用。你的解释本身就很好,但如果你看到我的编辑,我想知道更多。@keybrbdbasher:从未听说过
标记。你在哪里看到过它?我的坏Tim,在DetailsView中看到了标签,并推测(错误!)它也可以在GridView中使用。