System.ArgumentOutOfRangeException:'索引超出范围。必须是非负数且小于集合的大小。'

时间:2017-07-05 12:09:12

标签: c# asp.net

protected void getSUM()
{
    // SQL query that gets total of product sales where category id = 1
    string SqlQuery = @"SELECT Price AS TotalSales 
  FROM STOCK
  WHERE Barcode = '" + TextBox1 + "'";

    // Declare and open a connection to database


    sqlcon.Open();

    // Creates SqlCommand object
    SqlCommand comm = new SqlCommand(SqlQuery, sqlcon);

    // Gets total sales
    decimal TotalSales = Convert.ToDecimal(comm.ExecuteScalar());

    // Close connection
    sqlcon.Close();

    // Adds formatted output to GridView footer
    GridView1.Columns[3].FooterText = String.Format("{0:c}", TotalSales);
}

我只想在gridview的页脚添加价格。我不明白什么是错的。错误在这一行GridView1.Columns [3] .FooterText = String.Format(" {0:c}",TotalSales);

1 个答案:

答案 0 :(得分:0)

您可能在GridView中使用AutoGenerateColumns="true"。使用此功能后,您只能访问RowCreatedRowDataBound事件中的列。网格完成后,列数将为0。

更好地使用TemplateFields。你会有更多的控制权。

<asp:GridView ID="GridView1" runat="server">
    <Columns>
        <asp:TemplateField>
            <ItemTemplate>
                <%# Eval("myColumn") %>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

现在GridView1.Columns.Count将返回1