如何在网格视图中自动生成列之后插入列- ASP.NET

本文关键字:插入列 之后 ASP NET 自动生成 网格 视图 | 更新日期: 2023-09-27 18:04:10

这是我的gridview:

<asp:GridView ID="gridview" runat="server" AutoGenerateColumns="true">
    <Columns>
        <asp:TemplateField HeaderText="TestColumn">
            <ItemTemplate>
                <asp:LinkButton ID="lkbtn" runat="server" Text="Edit"
                    CommandName="Update" CausesValidation="False" ToolTip="Edit" />
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

TestColumn最终成为第一列,但我希望它之后自动生成的

如何在网格视图中自动生成列之后插入列- ASP.NET

RowDataBound事件处理程序中,您可以将TemplateField单元格从第一列移动到行尾:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    TableCell cell = e.Row.Cells[0];
    e.Row.Cells.RemoveAt(0);
    e.Row.Cells.Add(cell);
}

恐怕不行。阅读MS文档:

还可以将显式声明的列字段与自动生成的列字段。当两者都被显式使用时首先呈现声明的列字段,然后是自动生成的列字段。自动生成界列字段未添加到Columns集合中。

将AutoGenerateColumnProperty设置为false,然后按您喜欢的顺序排列列。

如果你只想添加一个编辑按钮,你应该使用:

<asp:CommandField ShowEditButton="True" />

下面是一个使用northwind数据库的例子

<asp:GridView ID="GridView1" runat="server"
AutoGenerateColumns="False"
DataKeyNames="ProductID"
DataSourceID="SqlDataSource1">
<Columns>
<asp:BoundField DataField="ProductID" HeaderText="ProductID"
InsertVisible="False" ReadOnly="True" SortExpression="ProductID" />
<asp:BoundField DataField="ProductName" HeaderText="ProductName"/>
<asp:BoundField DataField="SupplierID" HeaderText="SupplierID" />
<asp:BoundField DataField="CategoryID" HeaderText="CategoryID"/>
<asp:BoundField DataField="QuantityPerUnit" HeaderText="QuantityPerUnit"/>
<asp:BoundField DataField="UnitPrice" HeaderText="UnitPrice" />
<asp:BoundField DataField="UnitsInStock" HeaderText="UnitsInStock" />
<asp:BoundField DataField="UnitsOnOrder" HeaderText="UnitsOnOrder" />
<asp:BoundField DataField="ReorderLevel" HeaderText="ReorderLevel" />
<asp:CheckBoxField DataField="Discontinued" HeaderText="Discontinued"/>
<asp:CommandField ShowEditButton="True" />
</Columns>
</asp:GridView>