C# DataGridView, большие ячейки: Удовлетворяйте никогда полностью видимую, прокручивающую ячейку пропусков

Я знаю, что Вы попросили Java, но это кажется мне задачей, хорошо подходящей для языка сценариев. Вот быстрое (очень простое) решение, записанное в Groovy.

Записи test.csv

string,float1,float2,integer
hello world,1.0,3.3,4
goodbye world,1e9,-3.3,45
hello again,-1,23.33,456
hello world 3,1.40,34.83,4999
hello 2 world,9981.05,43.33,444

csvtoxml.groovy

#!/usr/bin/env groovy

def csvdata = []
new File("test.csv").eachLine { line ->
    csvdata << line.split(',')
}

def headers = csvdata[0]
def dataRows = csvdata[1..-1]

def xml = new groovy.xml.MarkupBuilder()

// write 'root' element
xml.root {
    dataRows.eachWithIndex { dataRow, index ->
        // write 'entry' element with 'id' attribute
        entry(id:index+1) {
            headers.eachWithIndex { heading, i ->
                // write each heading with associated content
                "${heading}"(dataRow[i])
            }
        }
    }
}

следующий XML к stdout:

<root>
  <entry id='1'>
    <string>hello world</string>
    <float1>1.0</float1>
    <float2>3.3</float2>
    <integer>4</integer>
  </entry>
  <entry id='2'>
    <string>goodbye world</string>
    <float1>1e9</float1>
    <float2>-3.3</float2>
    <integer>45</integer>
  </entry>
  <entry id='3'>
    <string>hello again</string>
    <float1>-1</float1>
    <float2>23.33</float2>
    <integer>456</integer>
  </entry>
  <entry id='4'>
    <string>hello world 3</string>
    <float1>1.40</float1>
    <float2>34.83</float2>
    <integer>4999</integer>
  </entry>
  <entry id='5'>
    <string>hello 2 world</string>
    <float1>9981.05</float1>
    <float2>43.33</float2>
    <integer>444</integer>
  </entry>
</root>

Однако код делает очень простой парсинг (не принимающий во внимание заключенные в кавычки или оставленные запятые), и это не составляет возможные отсутствующие данные.

6
задан sunside 26 October 2009 в 20:53
поделиться

1 ответ

Я бы обрезал содержимое любой ячейки сверх определенного размера (с многоточием для обозначения усечения) и позволял щелкнуть ячейку, чтобы отобразить всплывающее окно с полным содержимым отображается в прокручиваемом окне. Или я бы отобразил содержимое этих потенциально больших ячеек в настраиваемом UserControl, который сам содержит полосы прокрутки, если текст превышает определенную длину.

Вы столкнулись с проблемой, которая возникает из-за непреднамеренного использования DataGridView, поэтому я не удивлен, что нет простого встроенного способа справиться с этим.

Обновление : для просмотра журналов ReportViewer может быть более подходящим элементом управления. Вот несколько ссылок по его использованию:

http://www.codeproject.com/KB/cs/reportdisplay.aspx

http://www.microsoft.com/Downloads/details.aspx?FamilyID=f38f7037 -b0d1-47a3-8063-66af555d13d9 & displaylang = en

http://www.devx.com/dotnet/Article/30424/

1
ответ дан 17 December 2019 в 22:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: