2011-08-02 12 views
8

To mój gridview:Jak wstawić kolumnę w GridView po auto generowane kolumn - 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> 

TestColumn kończy się pierwsza kolumna, ale chcę go po auto wygenerowane.

+0

można używać jQuery do zmiany pozycji kolumny? – Sami

Odpowiedz

0

Ustawiasz AutoGenerateColumnProperty na wartość false, a następnie porządkujesz kolumny według własnego uznania.

Jeśli chcesz po prostu dodać przycisk edycji, należy użyć:

<asp:CommandField ShowEditButton="True" /> 

Oto przykład przy użyciu northwind bazy

<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

OP wyraźnie określił, że chce, aby kolumny były generowane automatycznie. W ten sposób wykorzystasz tę zaletę automatycznego generowania kolumn. – P5Coder

+0

Mój błąd. Zbyt szybko przeczytałem to pytanie. – alexandrekow

0

Obawiam się, że może nie być możliwe. Czytaj MS documentation:

Można również połączyć jawnie deklarowane pól kolumn z automatycznie generowanych pól kolumn. Gdy są używane oba, jawnie deklarowane pola kolumn są renderowane jako pierwsze, a następnie automatycznie generowane pola kolumn . Automatycznie generowane powiązane kolumny kolumn nie są dodawane do kolekcji Kolumny.

1

W obsługi zdarzeń RowDataBound, można przenieść komórkę TemplateField z pierwszej kolumny do końca rzędu:

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