Frage

Ich habe diese Methode, wie kann ich die Dezimalstelle auf .00 und nicht 0,0000?

machen
    public static List<Product> GetAllProducts()
{
    List<Product> products = new List<Product>();
    string sqlQuery = "SELECT * FROM Products";
    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        using (SqlCommand command = new SqlCommand(sqlQuery, connection))
        {
            connection.Open();

            using (SqlDataReader reader = command.ExecuteReader(CommandBehavior.CloseConnection))
            {
                while (reader.Read())
                {
                    Product product = new Product();
                    product.Id = Convert.ToInt32(reader["Id"]);
                    product.ManufacturerId = Convert.ToInt32(reader["ManufacturerId"]);
                    product.CategoryId = Convert.ToInt32(reader["CategoryId"]);
                    product.Name = (reader["Name"]).ToString();
                    product.Description = (reader["Description"]).ToString();
                    product.Price = Convert.ToDecimal(reader["Price"]);
                    product.ItemsInStock = Convert.ToInt32(reader["ItemsInStock"]);

                    products.Add(product);
                }
            }
        }
    }
    return products;
}

UPDATE: Sorry für dumme Fragen zu stellen. Ich kann nicht sehen, wo die Dataformatstring setzen = "{0: F2}"

Das ist mein Raster:

            <asp:TemplateField HeaderText="Price" SortExpression="Price">
                <EditItemTemplate>
                    <asp:TextBox ID="PriceTextBox" runat="server" Text='<%# Bind("Price") %>'></asp:TextBox>
                </EditItemTemplate>
                <ItemTemplate>
                    <asp:Label ID="PriceLabel" runat="server" Text='<%# Bind("Price") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
War es hilfreich?

Lösung

Sie haben nicht gezeigt, wo Sie diese Anzeige. Alles, was wir haben, ist eine Datenbankzelle und ein Objekt im Speicher, sind beide von denen lediglich der Lagerung. Zur Lagerung, .00 und .0000 sind das gleiche. von einem zum anderen übersetzen Der Versuch, eine Verschwendung von Ressourcen ist. Zeigen Sie uns, wo Sie diese Anzeige für den Benutzer, und wir werden Ihnen helfen, es zu formatieren, wie Sie wollen.

Auch als persönliche Präferenz ich diesen Code wie folgt schreiben würde:

private static ToProduct(this IDataRecord record)
{
    var product = new Product();
    product.Id = record.GetInt32(record.GetOrdinal("Id"));
    product.ManufacturerId = record.GetInt32(record.GetOrdinal("ManufacturerId"));
    product.CategoryId = record.GetInt32(record.GetOrdinal("CategoryId"));
    product.Name = record.GetString(record.GetOrdinal("Name"));
    product.Description = record.GetString(record.GetOrdinal("Description"));
    product.Price = record.GetDecimal(record.GetOrdinal("Price"));
    product.ItemsInStokc = record.GetInt32(record.GetOrdinal("ItemsInStock"));
    return product;
}

public static IEnumerable<Product> GetAllProducts()
{
    string sqlQuery = "SELECT * FROM Products";
    using (SqlConnection connection = new SqlConnection(connectionString))
    using (SqlCommand command = new SqlCommand(sqlQuery, connection))
    {
        connection.Open();

        using (SqlDataReader reader = command.ExecuteReader(CommandBehavior.CloseConnection))
        {
            while (reader.Read())
            {
                yield return reader.ToProduct();
            }
        }
    }
}

Update:
Sie bemerken, dass dies in einem Gridview sein wird. Okay. In diesem Fall alles, was Sie tun müssen, ist eine DataFormatString in der Spaltendefinition hat, wie folgt:

<asp:GridView runat="server" id="TestView" ... >
    <Columns>
        <asp:BoundField DataFormatString="{0:F2}"  />
        ...
    </Columns>
</asp:GridView>    

Andere Tipps

1234m.ToString ( "0.00")

Wenn Product.Price drucken, verwenden Sie .ToString ( "N2"). Was möchten Sie vielleicht ist die volle Währung Ausdruck, der wird .ToString ( „C“). Hier ist ein Referenz-Link für alle Formatstrings:

http://msdn.microsoft.com/en-us/library /dwhawy9k.aspx

Nun könnte man natürlich nicht tun das folgende

product.Price = Convert.ToDecimal(reader["Price"]).ToString("0.00");

, da es eine Zeichenfolge zurückgeben würde. Obwohl Sie können dies tun beable:

product.Price = Convert.ToDecimal(reader["Price"].ToString("0.00"));

Dies scheint den logischste Weg, um diesen Vorgang abzuschließen.

Sind Sie besorgt über Kultureinstellungen?

Sehen Sie sich diesen Msdn Link: http://msdn.microsoft.com/en-us/library/dwhawy9k. aspx

Sollten Sie hoffentlich geben eine Hand.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top