none
Problema com Class Listview (retirar lista de itens selecionados no checkbox da listview) RRS feed

  • Pergunta

  • Olá desenvolvedores,

    Acontece o seguinte, não consigo passar a lista de itens selecionados(coleção do checkListView) para uma variável.

    Meu cenário:

    tenho um form, de seleção de banco de dados para dump, pois bem, tenho uma ListView que vai receber a lista do DataBase instalados no servidor (MySql), o usuário ira selecionar por esse componente ListView, clicando no CheckBox de cada item. Eu tenho um botão que finalizara a seleção (salvar) que chama uma class, que receberá os itens selecionados e escrevera em um arquivo XML

    O que ocorre:

    eu tentei com esta lógica.

    public void Selected(ref ListView LvListDB)
            {
                SetDataBasesDump dmp = new SetDataBasesDump();
    
                ListView.CheckedListViewItemCollection chklist = LvListDB.CheckedItems;
    
                foreach (ListViewItem d in chklist)
                {
                    db = chklist.ToString(); 
                }
    //variável do tipo string que receber a lista
                dmp.DataBaseDump(db);
    
            }

    a lógica que ira escrever o XML

    public void DataBaseDump(string db)
            {
                XmlTextWriter xtw = new XmlTextWriter("C:\\Users\\VINNY\\Sistemas\\Sistemas ZoneWork\\BackupMySql\\ZoneWorkBackupMySql\\ZoneWorkCFG.ConfigDump.xml", Encoding.UTF8);
                xtw.Formatting = Formatting.Indented;
                xtw.WriteStartDocument();
    
                xtw.WriteStartElement("ConfigDump");
                xtw.WriteElementString("DataBases", db.ToString());
                xtw.WriteEndElement();
    
                xtw.Close();
            }
        }

    o que ta acontecendo. ele ta enviando os locais da coleção, não a coleção.

    eu tentei também:

    db = d.text;

    em uma tentativa doida mas, como esperado ele escreve o item selecionado, não recebe toda a lista...

    Alguém pode ajudar, e uma aplicação para fins acadêmicos.

     

     

    quarta-feira, 16 de dezembro de 2015 22:16

Todas as Respostas

  • Boa tarde.

    Tente:

    ListView.CheckedListViewItemCollection chklist = LvListDB.CheckedItems;
    	    List<string> db = new List<string>();
                foreach (ListViewItem d in chklist)
                {
                    db.Add(d.Text); 
                }
    //variável do tipo string que receber a lista
                dmp.DataBaseDump(db);

    E na criação do XML:

    public void DataBaseDump(string db)
            {
                XmlTextWriter xtw = new XmlTextWriter("C:\\Users\\VINNY\\Sistemas\\Sistemas ZoneWork\\BackupMySql\\ZoneWorkBackupMySql\\ZoneWorkCFG.ConfigDump.xml", Encoding.UTF8);
                xtw.Formatting = Formatting.Indented;
                xtw.WriteStartDocument();
    	    
    foreach(var item in db)
    { xtw.WriteStartElement("ConfigDump"); xtw.WriteElementString("DataBases", item); xtw.WriteEndElement(); xtw.Close(); }
    No XML tu podes customizar com o formato que tu achares melhor; no caso aqui ele irá criar vários elementos "ConfigDump", caso queira repetir só o "DataBases", formate como necessário.


    Att., Rafael Simor

    sexta-feira, 18 de dezembro de 2015 18:43