title: DataGridView format currency with dynamic string data
body: <p>I have a <code>DataGridView</code> with AutoGenerateColumns=true.<br>
  I populate the data from CSV (so they are all <strong>string</strong>, not decimal)</p>
  
  <pre><code>DataTable dt = CsvToDataTable(masterlistCsvPath); // My function, returns a DataTable
  //dt.Columns['Price'].DataType = Type.GetType("System.Decimal"); // Exception: Cannot change DataType of a column once it has data.
  dgvMasterList.DataSource = dt;
  </code></pre>
  
  <p>How do you format the <em>Price</em> column <strong>as currency</strong>?<br>
  eg. "38.5" &rarr; "$38.50" or "38.50"</p>
  
  <p>This doesn't work (it does nothing):</p>
  
  <pre><code>dgvMasterList.Columns["Price"].ValueType = Type.GetType("System.Decimal");
  dgvMasterList.Columns["Price"].DefaultCellStyle.Format = "C";
  </code></pre>
  
  <p>This works (just to prove I'm calling it correctly)</p>
  
  <pre><code>dgvMasterList.Columns["Price"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
  </code></pre>
  
  <p><strong>Another</strong> related question:<br>
  How do you add a percent symbol to a column?<br>
  eg. "5" &rarr; "5%"</p>