2011-08-02 42 views
8

Esta es mi gridview:Cómo insertar una columna en un gridview después de que el automóvil genera columnas - ASP.NET

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

El testcolumn termina siendo la primera columna, pero yo quiero que después de que el automóvil generados

+0

Se puede utilizar jQuery para cambiar la posición de las columnas? – Sami

Respuesta

0

Establece AutoGenerateColumnProperty en falso y luego ordena las columnas como desee.

Si lo que desea es añadir un botón de edición, se debe utilizar:

<asp:CommandField ShowEditButton="True" /> 

Aquí hay un ejemplo usando la base de datos 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> 
+0

El OP claramente especificó que quiere que las columnas se generen automáticamente. Usar tu camino eliminará esa ventaja de las columnas de autogeneración. – P5Coder

+0

Mi error. Leí la pregunta demasiado rápido. – alexandrekow

0

me temo que no puede ser posible. Leer MS documentation:

También se pueden combinar los campos de columna declarados explícitamente campos de columna generados automáticamente. Cuando se usan ambos, explícitamente campos de columna declarados se representan primero, seguidos por campos de columna generados automáticamente. Los campos de columna enlazados generados automáticamente no se agregan a la colección Columnas.

1

En el controlador de eventos RowDataBound, puede mover la celda TemplateField desde la primera columna hasta el final de la fila:

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