如何在DataGrid中基于另一个字段显示某些数据字段
本文关键字:字段 显示 数据 另一个 DataGrid | 更新日期: 2023-09-27 17:53:12
我有一个表单,用户可以填写3种不同的成本,然后点击一个复选框并批准其中一种成本。然后批准的成本需要显示在DataGrid
<asp:DataGrid CssClass="tblResults" runat="server" ID="dgDetails" OnItemDataBound="dgDetails_ItemDataBound" DataKeyField="ID" AutoGenerateColumns="false" style="display:none">
<HeaderStyle CssClass="tblResultsHeader" />
<AlternatingItemStyle BackColor="#EEEEEE" />
<Columns>
<asp:BoundColumn DataField="Code" HeaderText="Code"></asp:BoundColumn>
<asp:BoundColumn DataField="Cost" HeaderText="Cost"> </asp:BoundColumn>
<asp:HyperLinkColumn DataNavigateUrlFormatString="javascript:deleteDetail({0})" DataNavigateUrlField="ID" HeaderText="Delete" DataTextField="ID" ItemStyle-CssClass="tblRowDelete" ></asp:HyperLinkColumn>
</Columns>
背后的代码:
protected void dgDetails_ItemDataBound(object sender, DataGridItemEventArgs e)
{
if (e.Item.ItemType != ListItemType.Header && e.Item.ItemType != ListItemType.Footer && e.Item.ItemType != ListItemType.Pager)
{
Quote.QuoteDetails qd = (Quote.QuoteDetails)e.Item.DataItem;
e.Item.Attributes.Add("ID", "dgDetails_" + qd.ID);
e.Item.Attributes.Add("class", "dgDetailsRow");
e.Item.ToolTip = "Click here to Edit Detail";
}
问题是在DataGrid
中显示正确的成本。现在它正在显示数据字段Cost
。但是如果第二个Cost
已经被批准,那么我需要显示数据字段Cost2
。是否有办法在DataGrid
中使用if语句来检查哪些成本已被批准?比如:
if(approved1.checked)
{
<asp:BoundColumn DataField="Cost" HeaderText="Cost"> </asp:BoundColumn>
}
else if (approved2.checked)
{
<asp:BoundColumn DataField="Cost2" HeaderText="Cost"> </asp:BoundColumn>
}
可以在DataGrid
中添加if语句吗?或者是否有一种方法可以从后面的代码中做到这一点?
我会使用后面的代码和模板列。
<asp:TemplateColumn>
<ItemTemplate>
<asp:Label ID="lblCost" runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateColumn>
后面的代码类似于:
protected void dg1_ItemDataBound(object sender, DataGridItemEventArgs e)
{
Label lblCost;
Quote.QuoteDetails qd = (Quote.QuoteDetails)e.Item.DataItem;
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
lblCost = (Label)e.Item.FindControl("lblCost");
if (qd.Approved1)
lblCost.Text = string.Format("{0:0.00", qd.Cost);
else if (qd.Approved2)
lblCost.Text = string.Format("{0:0.00", qd.Cost2);
else
throw new NotImplementedException("oops!");
}
}