如何在datagridview列值C#中转换文件大小

时间:2016-10-13 00:59:02

标签: c# winforms datagridview

我正在制作Windows应用程序。

在我的申请中,工作流程就像这样

  1. 在文本框中写入文本,然后单击开始按钮

  2. DataGridView

  3. 中显示的匹配数据

    现在我想在Datagridview列中转换为文件大小

    例如,在我的数据库中,DBsize值保存在byte foramt中,如下所示:451936256

    但很难算数,所以在DataGridView中,我想显示如下转换:431MB

    我在下面显示了我的按钮点击代码,我该怎么做?请帮帮我。

    谢谢

    private void btnStart_Click(object sender, EventArgs e)
            {
                string webApplicationName = string.Empty;
                string siteID = string.Empty;
                mtlblError.Text = "no record returned";
    
                Migration_Status_DAC dac = new Migration_Status_DAC();
                DataSet ds = new DataSet();
    
                try
                {
    
                    ds = dac.SelectWebApplicationStatus(mtextUrl.Text);
                    DataTable dt = ds.Tables[0];
    
    
                    if (ds != null && dt != null && dt.Rows.Count > 0)
                    {
    
                        mgrdWebApplication.DataSource = dt;
                    }
                    else
                    {
                         mtlblError.Visible = true;
                    }
                }
                catch(Exception ex)
                {
                    LogWrite.writeLog(ex.ToString();
                }
            }
    

2 个答案:

答案 0 :(得分:1)

我完成了我的代码,来自Reza Aghaei的建议。

首先使用CellFormatting事件

private void mgrdContentDatabase_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
    if(this.mgrdContentDatabase.Columns[e.ColumnIndex].HeaderText== "Size(GB)")
    {
        if (e.Value != null)
        {
            CovertFileSize(e);
        }
    }
}

下一步转换文件大小方法。

private void CovertFileSize(DataGridViewCellFormattingEventArgs formatting)
        {
            if (formatting.Value != null)
            {
                try
                {
                    long bytes;
                    bytes = Convert.ToInt64(formatting.Value);
                    string size = "0 Bytes";

                    //GB
                    if (bytes >= 1073741824.0)
                        size = String.Format("{0:##.##}", bytes / 1073741824.0) + " GB";
                    //MB
                    else if (bytes >= 1048576.0)
                        size = String.Format("{0:##.##}", bytes / 1048576.0) + " MB";
                    //KB
                    else if (bytes >= 1024.0)
                        size = String.Format("{0:##.##}", bytes / 1024.0) + " KB";
                    //Bytes
                    else if (bytes > 0 && bytes < 1024.0)
                        size = bytes.ToString() + " Bytes";

                    formatting.Value = size;
                    formatting.FormattingApplied = true;
                }
                catch(FormatException)
                {
                    formatting.FormattingApplied = false;
                }
            }

        }

现在它在我的应用程序中运行良好。

答案 1 :(得分:0)

您可以使用此功能将字节转换为兆字节。

public double ConvertBytesToMegabytes(long bytes)
{
    return (bytes / 1024f) / 1024f;
}

然后在你的代码上使用它。

webApplicationName =  ConvertBytesToMegabytes(dt.Rows[0]["AppName"].ToString());