繁体   English   中英

c#CheckedListbox值

[英]c# CheckedListbox values

当我想将值放入从选中列表框中选择的数组中时。 然后说:

messagebox.show(values[0]);

它说: System.Data.DataRowView

这是我当前的代码:

        string[] itemArr = new string[clbTables.CheckedItems.Count];
        int counter = 0;
        foreach (object item in this.clbTables.CheckedItems)
        {
            string temp = Convert.ToString(item);
            itemArr[counter] = temp;
            counter++;
        }
        MetroMessageBox.Show(this, itemArr[0].ToString());

我在这里做错了什么>?

编辑 ::

clbTables.DataSource = sqlDisplayContent.connectDataTable("SELECT ('Tafelnr: '+ CONVERT(varchar,tafelnr)+' Zitplaatsen: '+ CONVERT(varchar,zitPlaatsen)) AS dispValue,tafelnr  FROM tabel");
clbTables.DisplayMember = "dispValue";
clbTables.ValueMember = "tafelnr";



class sqlDisplayContent
        {
            public static DataTable connectDataTable(string query)
            {
                SqlCommand comm= sqlCrud.returnSqlCommand(query);
                SqlDataAdapter sda = new SqlDataAdapter(comm);
                DataTable dt = new DataTable();
                sda.Fill(dt);
                return dt;
            }
        }

Thankss

问题是:

Convert.ToString(item);

将简单地调用对象的 ToString() 方法并存储它,在这种情况下,它为您提供对象的类型。 在本例中,类型为 System.Data.DataRowView。 我建议您使用以下方法访问所需行中的特定字段:

((DataRowView)item).Row["FieldName"].ToString();

反而。 您将需要用您想要的列名称替换“FieldName”。 此外,您可以使用 int 索引而不是字符串引用。 当然,如果需要访问多个字段,可以通过简单的字符串连接来实现。 问题是您需要访问所需的特定字段。 不是您当前所在的整行。

我希望这有帮助!

几个参考: DataRowDataRowView

我想你的 values[] 数组不正确。 请参考 MSDN 上的这个例子。

https://msdn.microsoft.com/en-us/library/system.windows.forms.checkedlistbox.checkeditems(v=vs.110).aspx

string temp = ((CheckBox)item).Text;

您传入的是对象,而不是对象的文本(这似乎是您希望代码执行的操作)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM