我是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();
}
提前致谢:)
答案 0 :(得分:0)
文本框是否在gridview之外,你不会遇到问题。
如果你不能,你可以尝试通过:
(DropDownList)sender.Parent
@Alex Bell的链接也是一个更好的解决方案: