繁体   English   中英

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

[英]System.ArgumentOutOfRangeException: 'Index was out of range. Must be non-negative and less than the size of the collection.'

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);

您可能在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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM