如何将下拉列表添加为gridview项

 e31384874 发布于 2023-02-07 11:01

我的表单在gridview中有三列.一个是数量(下拉列表){ 如何添加此数量下拉列表?},其他是价格和金额.我想计算gridview内的数量.如果我选择数量"2",那么它计算数量*价格.如何selectedindexchanged在gridview或任何其他选项中获取下拉属性?

如何在gridview项中添加下拉列表?如何在gridview内的下拉列表中添加值?如何selectedindexchanged在asp.net的gridview中为下拉列表编写事件代码?

1 个回答
  • 你的问题有三个部分:

    如何在GridView中添加DropDownList?

    如何从GridView中的DropDownList中获取所选项?

    如何计算值并在GridView中显示?

    这是我们如何做到的.首先在页面中添加此标记.我为产品名称添加了一个列,使其看起来更好:

    <asp:GridView ID="GridView1" AutoGenerateColumns="false" runat="server" OnRowDataBound="GridView1_RowDataBound">
        <Columns>
            <asp:BoundField DataField="Name" HeaderText="Name" />
            <asp:TemplateField HeaderText="Quantity">
                <ItemTemplate>
                    <asp:DropDownList ID="ddlQuantity" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddlQuantity_SelectedIndexChanged"></asp:DropDownList>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Price">
                <ItemTemplate>
                    <asp:Label ID="lblPrice" Text='<%#Eval("Price") %>' runat="server" ></asp:Label>
                </ItemTemplate>
    
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Amount">
                <ItemTemplate>                        
                    <asp:Label ID="lblAmount" Text="0.00" runat="server" ></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>
    

    如何在GridView中添加DropDownList

    在Page_Load()中填充GridView(我使用了产品列表):

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            //Test data to populate GridView
            GridView1.DataSource = new List<Product>()
            {
                new Product{ID=1, Name="Paper", Price=7.99M},
                new Product{ID=2, Name="Pen", Price=14.99M},
                new Product{ID=3, Name="Pencil", Price=1.99M}
            };
    
            GridView1.DataBind();
        }
    }
    

    这将触发GridViewRowDataBound事件.在event方法中,我们将在每行中绑定DropDownList,如下所示:

    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            var ddl = e.Row.FindControl("ddlQuantity") as DropDownList;
            if (ddl != null)
            {
                ddl.DataSource = new List<string>() { "0", "1", "2", "3", "4" };
                ddl.DataBind();
            }
        }
    }
    

    如何从GridView中的DropDownList中获取所选项目

    如何计算值并在GridView中显示

    当您更改DropDownList中的任何选择时,它将触发SelectedIndexChange事件.在那个事件方法中,我们可以找到哪个DropDownList被更改,而且它的"NamingContainer" - GridView的行保存它:

    protected void ddlQuantity_SelectedIndexChanged(object sender, EventArgs e)
    {
        GridViewRow gvr = ((DropDownList)sender).NamingContainer as GridViewRow ;
        if (gvr != null)
        {
            decimal price = 0.00M;
            int quantity = 0;
            //We can find all the controls in this row and do operations on them
            var ddlQuantity = gvr.FindControl("ddlQuantity") as DropDownList;
            var lblPrice = gvr.FindControl("lblPrice") as Label;
            var lblAmount = gvr.FindControl("lblAmount") as Label;
            if (ddlQuantity != null && lblPrice != null && lblAmount != null)
            {
                int.TryParse(ddlQuantity.SelectedValue, out quantity);
                decimal.TryParse(lblPrice.Text, out price);
    
                lblAmount.Text = (price * quantity).ToString();
            }    
        }
    }
    

    这是结果:

    在此输入图像描述

    您可以在此处下载测试项目.

    2023-02-07 11:04 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有