Listbox.multicolumn属性whit SQL查询 [英] Listbox.multicolumn property whit SQL query

查看:58
本文介绍了Listbox.multicolumn属性whit SQL查询的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

任何人都可以帮我解决下面的代码。我想制作一个MultiColumn列表框。

我已经调整了我的标准代码,但这给了我一个Collom数据列表框中的数据(IDMateriaal)。



如何自定义下面的代码以获取不同组合的数据。





ListBoxMateriaal

|| IDMateriaal | Omschrijving | Omschrijving2 ||



Can anyone help me with the code below. I want to make a MultiColumn listbox.
I have adapt my standard code but this give me one Collom with data in my listbox with data (IDMateriaal).

How do I customize the code below to get the data in different collems.


ListBoxMateriaal
|| IDMateriaal | Omschrijving | Omschrijving2 ||

private void MateriaalBOX()
        {
            using (connection = new SqlConnection(connectionstring))

            using (SqlDataAdapter adapter = new SqlDataAdapter("select [IDMateriaal],Omschrijving, Omschrijving2 from Materiaal ORDER BY Omschrijving ASC", connection))
                try
                {
                    DataTable materiaallijst = new DataTable();
                    adapter.Fill(materiaallijst);
                    //
                    ListBoxMateriaal.HorizontalScrollbar = true;
                    ListBoxMateriaal.FormattingEnabled = true;
                    ListBoxMateriaal.MultiColumn = true;
                    ListBoxMateriaal.ScrollAlwaysVisible = true;
                   ListBoxMateriaal.TabIndex = 0;
                    //
                    //ListBoxMateriaal.DisplayMember = "Omschrijving";
                    ListBoxMateriaal.ValueMember = "IDMateriaal";
                    ListBoxMateriaal.Items.AddRange(new object[]
                    {
                      "IDMateriaal, IDMateriaal",
                      "Omschrijving, Omschrijving",
                      "Omschrijving2, Omschrijving2",

                        });

                    ListBoxMateriaal.DataSource = materiaallijst;
                }





我的尝试:



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



What I have tried:

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

推荐答案

对于ListBox Multicolumn = true 只需将(单列)数据推送到另一列而不是使用滚动条。



而不是使用ListBox使用List View 例如

For a ListBox Multicolumn = true just pushes the (single column of) data into another column instead of using a scrollbar.

Instead of using a ListBox use a ListView e.g.
private void MateriaalBOX()
        {
            ListBoxMateriaal.TabIndex = 0;
            ListBoxMateriaal.Items.Clear();
            ListBoxMateriaal.View = View.Details;

            ListBoxMateriaal.Columns.Add("IDMateriaal");
            ListBoxMateriaal.Columns.Add("Omschrijving");
            ListBoxMateriaal.Columns.Add("Omschrijving2");

            using (var connection = new SqlConnection(connectionstring))
            {
                var query = "select [IDMateriaal],Omschrijving, Omschrijving2 from Materiaal ORDER BY Omschrijving ASC";
                using (var adapter = new SqlDataAdapter(query, connection))
                {
                    try
                    {
                        DataTable materiaallijst = new DataTable();
                        adapter.Fill(materiaallijst);

                        for (int i = 0; i < materiaallijst.Rows.Count; i++)
                        {
                            DataRow dr = materiaallijst.Rows[i];
                            ListViewItem listitem = new ListViewItem(dr["IDMateriaal"].ToString());
                            listitem.SubItems.Add(dr["Omschrijving"].ToString());
                            listitem.SubItems.Add(dr["Omschrijving2"].ToString());
                            ListBoxMateriaal.Items.Add(listitem);
                        } 
..etc                    



或者您可以使用DataGridView来显示数据。

唯一的其他选择我能想到的是写一个自定义控件。






Alternatively you could use a DataGridView to display the data.
The only other alternative I can think of would be to write a custom control.


Quote:

想要将IDMateriaal字段用作SelectedValue,因为在我的最终解决方案中,我不需要ID字段可视化..是这可能吗?

want to use the IDMateriaal field as SelectedValue, because in my final solution, I don't need the ID field be visualized.. Is this possible?



是的。我建议对上面提供的代码进行以下更改:


Yes. I suggest the following changes to the code I offered above:

//ListBoxMateriaal.Columns.Add("IDMateriaal");   //Don't need a column for the ID
ListBoxMateriaal.Columns.Add("Omschrijving");
ListBoxMateriaal.Columns.Add("Omschrijving2");
ListBoxMateriaal.MultiSelect = false;           //Only select one row
ListBoxMateriaal.FullRowSelect = true;          //Select the whole row, not just column 1

using (var connection = new SqlConnection(connectionstring))
{
    var query = "select [IDMateriaal],Omschrijving, Omschrijving2 from Materiaal ORDER BY Omschrijving ASC";
    using (var adapter = new SqlDataAdapter(query, connection))
    {
        try
        {
            DataTable materiaallijst = new DataTable();
            adapter.Fill(materiaallijst);

            for (int i = 0; i < materiaallijst.Rows.Count; i++)
            {
                DataRow dr = materiaallijst.Rows[i];
                ListViewItem listitem = new ListViewItem(dr["Omschrijving"].ToString());    //Note item in now based on this column
                listitem.SubItems.Add(dr["Omschrijving2"].ToString());

                listitem.Tag = dr["IDMateriaal"];                   // Store the ID for later on
                ListBoxMateriaal.Items.Add(listitem);
            }

您可以像这样

private void ListBoxMateriaal_SelectedIndexChanged(object sender, EventArgs e)
{
    lblSelected.Text = (ListBoxMateriaal.SelectedItems.Count > 0) ? ListBoxMateriaal.SelectedItems[0].Tag.ToString() : "Nothing Selected";
}













private void MateriaalBOX()
{
    ListBoxMateriaal.TabIndex = 0;
    ListBoxMateriaal.Items.Clear();
    ListBoxMateriaal.View = View.Details;

    ListBoxMateriaal.Columns.Add("Materiaalgroep");
    ListBoxMateriaal.Columns.Add("Omschrijving");
    ListBoxMateriaal.Columns.Add("Omschrijving2");
    ListBoxMateriaal.Columns.Add("Datum_wijziging");

    ListBoxMateriaal.MultiSelect = false;
    ListBoxMateriaal.FullRowSelect = true;

    using (var connection = new SqlConnection(connectionstring))
    {
        var query = "SELECT [IDMateriaal], Omschrijving, Omschrijving2, Datum_wijziging FROM Materiaal WHERE Omschrijving like (@Omschrijving) order by Omschrijving ASC";

        using (var adapter = new SqlDataAdapter(query, connection))
        {
            SqlParameter parm = adapter.SelectCommand.Parameters.AddWithValue("@Omschrijving", "%" + TX_Materiaalstuk_Zoeken.Text + "%");
            try
            {
                DataTable materiaallijst = new DataTable();
                adapter.Fill(materiaallijst);

                for (int i = 0; i < materiaallijst.Rows.Count; i++)
                {
                    DataRow dr = materiaallijst.Rows[i];
                    ListViewItem listitem = new ListViewItem(dr["IDMateriaal"].ToString());
                    listitem.SubItems.Add(dr["Omschrijving"].ToString());
                    listitem.SubItems.Add(dr["Omschrijving2"].ToString());
                    listitem.SubItems.Add(dr["Datum_wijziging"].ToString());


                    listitem.Tag = dr["IDMateriaal"]; // Store the ID for later on
                    ListBoxMateriaal.Items.Add(listitem);

                    ListBoxMateriaal.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent);
                    ListBoxMateriaal.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.StackTrace);
                Console.WriteLine(ex.Message);
            }

        }
    }
    ListBoxMateriaal.Columns[3].Width = 0;
}
        private void ListBoxMateriaal_SelectedIndexChanged(object sender, EventArgs e)
        {
            lblSelected.Text = (ListBoxMateriaal.SelectedItems.Count > 0) ? ListBoxMateriaal.SelectedItems[0].Tag.ToString() : "";
            LB_WijzigingingsDatum.Text = (ListBoxMateriaal.SelectedItems.Count > 0) ? ListBoxMateriaal.SelectedItems[0].SubItems[3].Text : "";
 
        }


这篇关于Listbox.multicolumn属性whit SQL查询的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆