Principales respuestas
String a listview

Pregunta
-
Estimados expertos del foro,
Ante todo, agradecer por adelantado cualquier ayuda prestada para solucionar el problema que tengo.
Estoy desarrollando una pequeña aplicación que realiza consultas SQL a una Base de Datos HANA (de SAP). Mi aplicación se apoya en el software PLINK.exe para poner hacer la sesión ssh contra el sistema donde se aloja la Base de Datos y recupero la respuesta en un string.
La función que uso para rellenar el ListView es así:
Process ParentProcess = new Process();
ProcessStartInfo ChildProcess = new ProcessStartInfo();
ChildProcess.FileName = "C:\\KeePass\\plink.exe";
ChildProcess.Arguments = ARGumento;
ChildProcess.RedirectStandardOutput = true;
ChildProcess.WindowStyle = ProcessWindowStyle.Hidden;
ChildProcess.CreateNoWindow = true;
ChildProcess.UseShellExecute = false;
ParentProcess.StartInfo = ChildProcess;
ParentProcess.Start();
StreamReader readerLines = ParentProcess.StandardOutput;
-------------------------
A partir de aquí lo que hago es parsear la salida de la consulta que viene en este formato:
CHID,DESCRIPTION,HOST,VALUE,EXPECTED_VALUE,C,SAP_NOTE " 10","Analysis date","","2016/08/02 13:11:47 (CEST)","","","" " 11","Database name","","AUD","","","" " 110","Everything started","","yes","yes",""," 2177064" " 111","Host startup time variation (s)","","0","<= 600",""," 2177064"
Uso estas funciones para tratar de rellenar el texto correcto dentro de cada campo del ListView:
string Salida = readerLines.ReadToEnd();
string SalidaSinRetorno = Salida.Replace("\r\n", string.Empty);
string SalidaSinDobleComilla = SalidaSinRetorno.Replace("\" ", ",");
string SalidaFinal = SalidaSinDobleComilla;
string[] sSizes = SalidaFinal.Split(',');
Y ahora trato de rellenar el ListView de la siguiente forma:
sSizes = sSizes.Where(x => !string.IsNullOrEmpty(x)).ToArray();
string[] TableItem = new string[NColumnas]; for (int i = 0; i < 10; i++)
{
int posi1 = 0+i;
int posi2 = 1+i;
int posi3 = 2+i;
int posi4 = 3+i;
int posi5 = 4+i;
int posi6 = 5+i;
int posi7 = 6 + i;
ListViewItem item;
TableItem[0] = sSizes[posi1].ToString();
TableItem[1] = sSizes[posi2].ToString();
TableItem[2] = sSizes[posi3].ToString();
TableItem[3] = sSizes[posi4].ToString();
TableItem[4] = sSizes[posi5].ToString();
TableItem[5] = sSizes[posi6].ToString();
TableItem[6] = sSizes[posi7].ToString();
item = new ListViewItem(TableItem);
lvHealthCheck.Items.Add(item);
}
Por algún motivo que no consigo entender (lo cierto es que soy muy muy novato) la salida en el ListView no es como espero. La salida en el ListView es esta:
https://1drv.ms/i/s!AlRQKXtdOa3HkzPw0pj3fv9Vcxgq
Así es como me gustaría que apareciese:
https://1drv.ms/i/s!AlRQKXtdOa3HkzLPz0gaij5crtgY
Por favor, ¿serían tan amables de ayudarme a solucionar mi problema y entender que estoy haciendo mal?
Les envío un millón de gracias
Un cordial saludo
Respuestas
-
hola
Si quieres visualizar las lineas de cada celda porque no usas el DataGridView ?
con este tendras el concepto de rows y columns, por eso las celdas apareceran bien delimitadas
es mas podrias asignar el DataSource del control asignandole un List<>
recomendaria uses librerias como ser
http://www.filehelpers.net/
si vas a parsear un archivo separado por comas, de esta forma mapeas cada dato con propeidades de una clase que luego puedes asignar directo al control
saludos
Leandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina- Marcado como respuesta Maxusete jueves, 4 de agosto de 2016 15:24
Todas las respuestas
-
hola
Si quieres visualizar las lineas de cada celda porque no usas el DataGridView ?
con este tendras el concepto de rows y columns, por eso las celdas apareceran bien delimitadas
es mas podrias asignar el DataSource del control asignandole un List<>
recomendaria uses librerias como ser
http://www.filehelpers.net/
si vas a parsear un archivo separado por comas, de esta forma mapeas cada dato con propeidades de una clase que luego puedes asignar directo al control
saludos
Leandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina- Marcado como respuesta Maxusete jueves, 4 de agosto de 2016 15:24
-