2016-10-13 3 views
1

私はWindowsアプリケーションを作成しています。私のアプリケーションの作業工程でDataGridviewの列値のファイルサイズを変換する方法C#

は、テキストボックスに、この

  1. 書き込みテキストのようなもので、ボタン[スタート]をクリックします

  2. 一致したデータは、DataGridViewの

をに示した。そして今、私がしたいですDatagridview列のファイルサイズに変換する

XAMPLE、私のデータベースでは、DBSIZE値は次のようにバイトforamtに保存されている:451936256

が、DataGridViewの中で、私はこのようにそれを変換見せたいので、それをカウントするのは難しいそれは `s:431メガバイト

私を示しましたボタンをクリックすると、どうすればいいですか?私を助けてください。

あなたはメガバイトにバイトを変換するには、この機能を使用することができます

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(); 
      } 
     } 
+1

[この投稿]からメソッドの1つを追加してください(http://stackoverflow.com/questions/281640/how-do-i-get-a-human-readable-file-size-in-bytes-abbreviation-using)。 -net)を使用して、バイトを人間が判読可能な形式に変換します。次に、そのメソッドを使って 'DataFormatting'イベントを' DataGridView'で処理し、 'e.Value'を設定します。 –

+0

Reza Aghaeiありがとう。私はあなたの言うことを理解していますが、これは私の最初のものです それを使用する時間..より詳細に説明できますか? –

+1

* ['DataGridView.CellFormatting'](https://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.cellformatting(v = vs.110).aspx)イベントを使用すると、セルの表示に使用する背景や前景色などのセルスタイルだけでなく、正確な表示値つまり、セル値自体に書式設定が必要かどうかにかかわらず、あらゆる種類のセル書式に対してこのイベントを処理できます。* –

答えて

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

     } 

これは私のアプリケーションでうまくいきます。

0

ありがとうございます。

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

この部分のコードでこれを使用してください。

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

あなたのコメントRalph Olazoに感謝します。 –

+0

しかし、そのコードは別のメソッドの 'パラメータ'の値を使っています。 –

関連する問題