【问题标题】:Add more columns to GridView向 GridView 添加更多列
【发布时间】:2013-04-06 00:33:53
【问题描述】:

我有一个GridView,它绑定到一个数据库表。这个GridView 显示了一些书籍(价格、作者信息等)。

我想在每本书的末尾添加一列“加入购物车”到这个GridView。我添加了一列,其中包含“添加到购物车”文本。但是,在调试时,它显示一个错误,因为“添加到购物车在 db 中不存在。”

所以请告诉我如何将此列附加到GridView

标记

<asp:GridView ID="GridView1" runat="server" BorderStyle="Double" 
    BorderWidth="3px" CellPadding="4" GridLines="Horizontal" Height="260px" 
    Width="661px">

    <FooterStyle BackColor="White" ForeColor="#333333" />
    <HeaderStyle BackColor="#336666" Font-Bold="True" ForeColor="White" />
    <PagerStyle BackColor="#336666" ForeColor="White" HorizontalAlign="Center" />
    <RowStyle BackColor="White" ForeColor="#333333" />
    <SelectedRowStyle BackColor="#339966" Font-Bold="True" ForeColor="White" />
    <SortedAscendingCellStyle BackColor="#F7F7F7" />
    <SortedAscendingHeaderStyle BackColor="#487575" />
    <SortedDescendingCellStyle BackColor="#E5E5E5" />
    <SortedDescendingHeaderStyle BackColor="#275353" />
    <Columns>
        <asp:ButtonField Text="Add To Cart">
        <FooterStyle HorizontalAlign="Right" />
        <HeaderStyle HorizontalAlign="Right" />
        <ItemStyle HorizontalAlign="Left" />
        </asp:ButtonField>
    </Columns>
</asp:GridView>

代码

public partial class WebForm9 : System.Web.UI.Page<p>
{
    buybl obj = new buybl();
    protected void Page_Load(object sender, EventArgs e)
    {
        obj.dept = "IT";
        GridView1.DataSource = obj.select();
        GridView1.DataBind();
    }
}

【问题讨论】:

  • 你能显示你GridView的标记吗?

标签: asp.net gridview


【解决方案1】:

没有你的标记,很难说。但是,听起来您可能在绑定到数据库的列之后对“添加到购物车”列进行了建模。您可能将数据绑定列设置为BoundFields,如下所示:

<Columns>
    <asp:BoundField DataField="Title" HeaderText="Book Title" />
    <asp:BoundField DataField="Author" HeaderText="Book Author" />
    <asp:BoundField DataField="Price" HeaderText="Book Price" />
</Columns>

您的“添加到购物车”列不会被数据绑定。如果您只想添加一个具有静态按钮的列,您可以将CommandField 添加到您的GridView,如下所示:

<Columns>
    <asp:BoundField DataField="Title" HeaderText="Book Title" />
    <asp:BoundField DataField="Author" HeaderText="Book Author" />
    <asp:BoundField DataField="Price" HeaderText="Book Price" />
    <asp:CommandField SelectText="Add To Cart" ShowSelectButton="True" />
</Columns>

或者您可以将AutoGenerateSelectButton="True" 添加到您的GridView 标记中。然后,您可以在单击“选择”按钮时触发的 RowCommandSelectedIndexChanged 事件中处理将商品添加到购物车

【讨论】:

  • 谢谢兄弟...它解决了问题...但是现在添加到购物车的列在开头..在 db 的表格之前。我可以放在末尾吗网格视图。
  • @RajuSNair 嗯。当您使用这样的自动生成的列时,我看不到更改列顺序的本机方式。您可以在数据绑定后在后面的代码中添加该列(我稍后会为此添加一些代码)。
【解决方案2】:

你可以在gridview中添加这样的列

<asp:TemplateField  >
   <HeaderTemplate  >
   <asp:Button ID="ButtonName" runat="server"  Text="Add to Cart" >   </asp:Button> 
</HeaderTemplate>
</asp:TemplateField>

【讨论】:

  • 是的,你是对的。您也在模板字段 中使用它
【解决方案3】:

使用 TemplateField 列类型 -- 无限自定义:
http://msdn.microsoft.com/en-us/library/bb288032.aspx

<asp:TemplateField HeaderText="FirstName" SortExpression="FirstName">

    <EditItemTemplate>

        <asp:TextBox ID="TextBox1" runat="server" Text='<% #Bind("FirstName") %>'></asp:TextBox>

    </EditItemTemplate>

    <ItemTemplate>

        <asp:Label ID="Label1" runat="server" Text='<% #Bind("FirstName") %>'></asp:Label>

    </ItemTemplate>

</asp:TemplateField>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-11
    • 1970-01-01
    • 2010-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-09
    相关资源
    最近更新 更多