Поместить кнопку как последний столбец в сетке - PullRequest
4 голосов
/ 30 марта 2012

У меня есть сетка, и я добавляю к ней столбцы по коду:

//Retrieve "Table" from database
gridOffers.DataSource = table;
gridOffers.DataBind();

Добавляемые по коду столбцы добавляются ПОСЛЕ кнопки, а это не то, что мне нужно: enter image description here Как сделатьЯ уверен, что кнопка Добавить в корзину самая последняя вещь?

Источник gridView:

<Columns>
             <asp:ImageField DataImageUrlField="ImageUrl" ControlStyle-Width="100"
                ControlStyle-Height = "100" HeaderText = "Preview Image"  
                 ItemStyle-HorizontalAlign="Center">
<ControlStyle Height="100px" Width="100px"></ControlStyle>

<ItemStyle HorizontalAlign="Center"></ItemStyle>
             </asp:ImageField>
             <asp:TemplateField ShowHeader="False">
                 <ItemTemplate>
                     <asp:Button ID="Button1" runat="server" CausesValidation="false" 
                         CommandName="btnAddToCart" Text="Add To Cart" />
                 </ItemTemplate>
             </asp:TemplateField>
        </Columns>

Ответы [ 3 ]

5 голосов
/ 30 марта 2012

Вы определяете столбцы в источнике GridView И, привязывая источник данных к GridView. Поэтому у вас есть два источника столбцов; может быть или не быть гарантированный порядок, в котором столбцы добавляются в GridView.

Вместо этого, почему бы не установить AutoGenerateColumns для GridView на False , а затем явно указать порядок столбцов, используя BoundField для каждого поля, которое вы хотите получить из данных источник в вашем источнике GridView, за которым следуют столбцы изображений и кнопок?

3 голосов
/ 30 марта 2012

Я не знаю, есть ли менее хакерский способ, но вы можете использовать RowDataBound, чтобы изменить порядок, чтобы после столбцов AutoGenerated следовали другие столбцы:

protected void gridOffers_RowDataBound(object sender, GridViewRowEventArgs e)
{
    TableCell cell = e.Row.Cells[0];
    e.Row.Cells.RemoveAt(0);
    //Move first to the end
    e.Row.Cells.Add(cell);
    cell = e.Row.Cells[0];
    e.Row.Cells.RemoveAt(0);
    //Move second to the end
    e.Row.Cells.Add(cell);
}
1 голос
/ 30 марта 2012

Есть ли у вас AutoGenerateColumns значение true в Gridview? Если это так, задайте для этого параметра значение false и вручную установите поля в сетке, используя asp:BoundField, задав DataField имя поля из источника данных.

Таким образом, вы можете установить точный порядок ваших столбцов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...