在Gridview中计算总价

时间:2016-03-15 04:30:11

标签: c# asp.net gridview

我是ASP.NET的新手。我的情况如下:

<asp:GridView AutoGenerateColumns="false" ID="GridView1" runat="server">
    <Columns>
        <asp:BoundField DataField="BookID" HeaderText="Book ID" />
        <asp:BoundField DataField="BookName" HeaderText="Book Name" />
        <asp:BoundField DataField="Author" HeaderText="Author" />
        <asp:BoundField DataField="Price" HeaderText="Price" />
        <asp:TemplateField HeaderText="Testing Field">
            <ItemTemplate>
                <asp:HiddenField ID="HiddenPrice" Value='<%#Eval("Price") %>' runat="server" />
                <asp:DropDownList AutoPostBack="true" OnSelectedIndexChanged="ddlQuantity_SelectedIndexChanged" ID="ddlQuantity" runat="server">
                    <asp:ListItem>1</asp:ListItem>
                    <asp:ListItem>2</asp:ListItem>
                    <asp:ListItem>3</asp:ListItem>
                    <asp:ListItem>4</asp:ListItem>
                    <asp:ListItem>5</asp:ListItem>
                    <asp:ListItem>6</asp:ListItem>
                    <asp:ListItem>7</asp:ListItem>
                    <asp:ListItem>8</asp:ListItem>
                    <asp:ListItem>9</asp:ListItem>
                </asp:DropDownList>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField>
            <ItemTemplate>
                <asp:TextBox ID="Total" Enabled="false" Text="asdfsdf" runat="server"></asp:TextBox>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>

正如您所看到的,我在gridview中有一个下拉列表。每当我在列表中选择不同的数字时,它会计算价格并添加到Total文本框(价格*数字)。

所以我的问题是如何计算所有Total文本框的总价格并将结果输出到girdview外的标签?

这是我的代码隐藏文件:

private static OBMDbContext context = new OBMDbContext();
protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        GridView1.DataSource = context.Books.ToList();
        GridView1.DataBind();
    }
}

protected void ddlQuantity_SelectedIndexChanged(object sender, EventArgs e)
{
    DropDownList ddl = (DropDownList)sender;
    int quantity = Convert.ToInt16(ddl.SelectedItem.Value);
    TextBox tb = (TextBox)ddl.FindControl("Total");
    HiddenField hf = (HiddenField)ddl.FindControl("HiddenPrice");
    tb.Text = (quantity * Convert.ToInt16(hf.Value)).ToString();
}

提前致谢:)

1 个答案:

答案 0 :(得分:0)

文本框是否在gridview之外,你不会遇到问题。

如果你不能,你可以尝试通过:

 (DropDownList)sender.Parent

@Alex Bell的链接也是一个更好的解决方案:

https://msdn.microsoft.com/en-us/library/bb310552.aspx