我不确定我是否选择了正确的词语来提问。但是,这是我的代码
<asp:GridView ID="dgvJobCostList" runat="server" CellPadding="4" ForeColor="#333333" style="font-family:Verdana;font-size:10px;" AutoGenerateColumns="False" OnSelectedIndexChanged="dgvJobCostList_SelectedIndexChanged">
<RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
<FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
<SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
<HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<EditRowStyle BackColor="#999999" />
<AlternatingRowStyle BackColor="White" ForeColor="#284775" />
<Columns>
<asp:TemplateField HeaderText="Valid From">
<ItemTemplate>
<asp:Label ID="lblRateEffectiveFrom" runat="server" Text='<%# Bind("RateEffectiveFrom") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Shipper">
<ItemTemplate>
<%--<asp:Label ID="lblShipperName" runat="server" Text='<%# Bind("ShipperName") %>'></asp:Label>--%>
<%--<asp:Label ID="lblShipperName" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "Shipper.ShipperName") %>'></asp:Label>--%>
<asp:Label ID="lblShipperName" runat="server" Text='<%# ((BOJobInfo)Container.DataItem).oShipper.ShipperName %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Consignee">
<ItemTemplate>
<%--<asp:Label ID="lblConsigneeName" runat="server" Text='<%# Bind("ConsigneeName") %>'></asp:Label>--%>
<asp:Label ID="lblConsigneeName" runat="server" Text='<%# ((BOJobInfo)Container.DataItem).oConsignee.ConsigneeName %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Income">
<ItemTemplate>
<asp:Label ID="lblTotalIncome" runat="server" Text='<%# Bind("TotalIncome") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Cost">
<ItemTemplate>
<asp:Label ID="lblTotalCost" runat="server" Text='<%# Bind("TotalCost") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="CM1">
<ItemTemplate>
<asp:Label ID="lblTotalCM1" runat="server" Text='<%# Bind("TotalIncome" - "TotalCost") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
我的问题是
1.我想计算收入和成本的差异,并在CM1模板中显示结果
2.我想将“RateEffectiveFrom”的日期格式化为“dd-MMM-yyyy”,目前显示类似于“dd-MM-yyyy hh:mm:ss AM / PM”的内容。
请像以前一样帮助。谢谢:))
答案 0 :(得分:1)
如果你想没有RowDataBound,你可以这样做:
<label id="cm1Label"><%# DataBinder.Eval(Container.DataItem, "TotalIncome") - DataBinder.Eval(Container.DataItem, "TotalCost")%></label>
或者在服务器上编写一个小的公共静态函数,它会根据传递的值给你带来差异
Text='<%# GetDifference(Eval("TotalIncome"),Eval("TotalCost"))%>'
约会,您可以这样做:
'<%# Convert.ToDateTime(Eval("RateEffectiveFrom")).ToString("dd/MM/yyyy")%>'
答案 1 :(得分:0)
为网格视图编写服务器端RowDataBound事件
使用e.Row.FindControl查找模板控件,例如
protected void dgvJobCostList_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
Label lblRateEffectiveFrom = ((Label)e.Row.FindControl("lblRateEffectiveFrom"));
//Use following line to change the date format in RowDataBound after finding the control
lblRateEffectiveFrom .Text = lblRateEffectiveFrom .Text.ToString(dd-MMM-yyyy")
//do what ever you want to do here using the value of your label
}
}
答案 2 :(得分:0)
感谢 @Rahul R 。虽然您提供的代码示例几乎不需要修改,但这些确实让我有了解决问题的想法。所以我会将你的答案标记为“答案”。这是我目前使用的代码
问题1。
<asp:TemplateField HeaderText="Income">
<ItemTemplate>
<asp:Label ID="lblTotalIncome" runat="server" Text='<%# Bind("TotalIncome") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Cost">
<ItemTemplate>
<asp:Label ID="lblTotalCost" runat="server" Text='<%# Bind("TotalCost") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="CM1">
<ItemTemplate>
<asp:Label ID="lblTotalCM1" runat="server" Text='<%# Convert.ToDouble(DataBinder.Eval(Container.DataItem, "TotalIncome")) - Convert.ToDouble(DataBinder.Eval(Container.DataItem, "TotalCost"))%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
问题2。
<asp:TemplateField HeaderText="Valid From">
<ItemTemplate>
<asp:Label ID="lblRateEffectiveFrom" runat="server" Text='<%# Eval("RateEffectiveFrom", "{0:dd-MMM-yyyy}") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
还要感谢Rana和Rizvi分享您的想法。感谢。
答案 3 :(得分:0)
这是我的方式,
public decimal GetOrders(decimal order)
{
totalOrders += order;
return order;
}
public decimal GetOrdersTotal()
{
return totalOrders;
}
而且,
<ItemTemplate>
<%# GetOrders(decimal.Parse(Eval("OrderTotal").ToString())).ToString("N2")%>
</ItemTemplate>
<FooterTemplate>
<%# GetOrdersTotal().ToString("N2")%>
</FooterTemplate>
对于日期,您可以使用相同的东西,或使用网格属性
中的格式函数