Как установить общее количество конкретного столбца в нижнем колонтитуле в gridview в C#?
Мне нужно установить общее количество столбцов в сетке.
Мой код:
<asp:TemplateField>
<HeaderTemplate>
Amount
</HeaderTemplate>
<ItemTemplate>
<asp:Label ID="lblAmt" HeaderText="Amount" runat="server"
Text='<%# Eval("Amount")%>' Visible="true">
</asp:Label>
</ItemTemplate>
<FooterTemplate>
<asp:Label ID="lblTotalAmt" runat="server" />
</FooterTemplate>
</asp:TemplateField>
а потом:
decimal totProfit = 0M;
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
Label lblAmt = (Label)e.Row.FindControl("lblAmt");
decimal Profitprice = Decimal.Parse(lblAmt.Text);
totProfit += Profitprice;
}
if (e.Row.RowType == DataControlRowType.Footer)
{
Label lblTotalAmt = (Label)e.Row.FindControl("lblTotalAmt");
lblTotalAmt.Text = totProfit.ToString();
}
}
Но ошибка пришла как:
Входная строка была не в правильном формате.
2 ответа
Это может быть потому, что ваш lblAmt
Может содержать значение, которое не является допустимым для десятичного числа. Поэтому убедитесь, что ваше значение должно быть в десятичном виде. Так что для более безопасного использования Decimal.TryParse
как это
if (e.Row.RowType == DataControlRowType.DataRow)
{
Label lblAmt = (Label)e.Row.FindControl("lblAmt");
decimal Profitprice = 0;
if(Decimal.TryParse(lblAmt.Text, out Profitprice));
{
totProfit += Profitprice;
}
}
MS распознает ошибку во время целочисленных преобразований, которая может появиться здесь ( http://support.microsoft.com/kb/942460)
Другой вариант - убедиться, что это число в поле "Сумма".
decimal totProfit = 0M;
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
Label lblAmt = (Label)e.Row.FindControl("lblAmt");
decimal Profitprice;
if (Decimal.TryParse(lblAmt.Text, Profitprice) ) {
totProfit += Profitprice;
}
}
if (e.Row.RowType == DataControlRowType.Footer)
{
Label lblTotalAmt = (Label)e.Row.FindControl("lblTotalAmt");
lblTotalAmt.Text = totProfit.ToString();
}
}