【问题标题】:How to insert a column in a gridview after the auto generated columns - ASP.NET如何在自动生成的列之后在 gridview 中插入列 - ASP.NET
【发布时间】:2011-08-02 13:33:04
【问题描述】:

这是我的网格视图:

<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 最终成为第一列,但我希望它在自动生成的列之后。

【问题讨论】:

  • 你能用jQuery改变列的位置吗?

标签: c# asp.net gridview


【解决方案1】:

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);
}

【讨论】:

    【解决方案2】:

    恐怕这不可能。阅读MS documentation

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

    【讨论】:

      【解决方案3】:

      您将 AutoGenerateColumnProperty 设置为 false,然后根据需要对列进行排序。

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

      <asp:CommandField ShowEditButton="True" />
      

      这里是一个使用北风数据库的例子

      <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>
      

      【讨论】:

      • OP 明确指定他/她希望自动生成列。使用您的方式将发挥自动生成列的优势。
      猜你喜欢
      • 2011-01-06
      • 1970-01-01
      • 2010-11-28
      • 2011-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多