热填充另一个表单中的列表视图?

时间:2021-05-10 17:40:33

标签: c#

我想显示一个带有listView的新表单,在这个listView中我想显示删除记录(来自查询),如果有人需要更多信息,我可以提供。

此时,我将要删除的记录填充到一个列表中,并调用另一个表单中的 locate 函数来显示 listView。

public partial class Documento : MaterialForm
{
 private void button1_Click(object sender, EventArgs e)
        {

            using (adAcerosOPEntities dbLocal = new adAcerosOPEntities())
            {
                String qDocumento = "";

                var remisiones = (dbLocal.Database.SqlQuery<datosConsulta>(qDocumento)).ToList();
                List<Documento> listDato = new List<Documento>();
                
                    foreach (var x in remisiones)
                    {
                        listDato.Add(new Documento { idRem = x.CIDDOCUMENTO });
                        listDato.Add(new Documento { serie = x.CSERIEDOCUMENTO });
                        listDato.Add(new Documento { folio = x.CFOLIO });
                        listDato.Add(new Documento { cliente = x.CCODIGOCLIENTE });
                        listDato.Add(new Documento { fecha = x.CFECHA });
                    }
                
                msgRemisiones ms = new msgRemisiones();
                ms.DialogResult(listDato);
            }
        }
}

这是我的Form2,我可以访问列表中的数据。 问题是当表单显示时,它会显示 ListView 但为空。我不知道问题出在哪里。我遵循了教程。

public partial class msgRemisiones : MaterialForm
{
        public void DialogResult(List<Documento> doc)

        {
            msgRemisiones ms = new msgRemisiones();
            tbRemisiones.View = View.Details;
            foreach (var v in doc)
            {
                ListViewItem lv = new ListViewItem(v.idRem.ToString());
                lv.SubItems.Add(v.serie);
                lv.SubItems.Add(v.folio.ToString());
                lv.SubItems.Add(v.cliente);
                lv.SubItems.Add(v.fecha);
                tbRemisiones.Items.Add(lv);
            }

            ms.Show();

        }
}

enter image description here

1 个答案:

答案 0 :(得分:1)

我开始尝试使用您的代码,但它非常令人困惑。

这是我通常用来在表单中填充列表控件的模式。

首先,填充列表。

List<Documento> listDato = new List<Documento>();

using (adAcerosOPEntities dbLocal = new adAcerosOPEntities())
{
    String qDocumento = "";

    var remisiones = (dbLocal.Database.SqlQuery<datosConsulta>(qDocumento)).ToList();
            
    foreach (var x in remisiones)
    {
        listDato.Add(new Documento { 
            idRem = x.CIDDOCUMENTO,
            serie = x.CSERIEDOCUMENTO,
            folio = x.CFOLIO,
            cliente = x.CCODIGOCLIENTE,
            fecha = x.CFECHA 
        });
    }
}

然后创建表单。将列表数据作为参数传递给表单构造函数。

msgRemisiones ms = new msgRemisiones(listDato);

显示表格。

ms.Show();

表格看起来像这样。

public partial class msgRemisiones : MaterialForm
{
    private List<Documento> listDato;

    public msgRemisiones(List<Documento> listDato) 
    {
        this.listDato = listDato;
    }
    
    // Populate the list control in the Form Load event.
    private void Form1_Load(object sender, System.EventArgs e)
    {
        foreach (Documento v in this.listDato)
        {
            ListViewItem lv = new ListViewItem(v.idRem.ToString());
            lv.SubItems.Add(v.serie);
            lv.SubItems.Add(v.folio.ToString());
            lv.SubItems.Add(v.cliente);
            lv.SubItems.Add(v.fecha);
            tbRemisiones.Items.Add(lv);
        }
    }