Nie przechowuj CLOB ani wynikowego ciągu w DataGridView.
Zamiast tego przechwyć zdarzenie kliknięcia w DataGridView, a następnie przekonwertuj CLOB na ciąg do wyświetlania. Użyj odpowiedniego kodowania z System.Text.Encoding
.
Zakładam, że Twój DataReader lub DataAdapter (niezależnie od tego, w jaki sposób wypełniasz DataSet) będzie przechowywać Twój CLOB w tablicy bajtów. (Tak jak w przypadku sterowników SQLServer i Informix).
byte[] clob;
// get it from your datarow/datagridview bound item
string thexml = System.Text.Encoding.UTF8.GetString(theclob)