Winforms Datagridview按Combobox Displaymember排序

时间:2015-08-20 15:55:22

标签: winforms datagridview combobox

我有一个问题,我试图通过Combobox DisplayMember而不是ValueMember对Datagridview进行排序。

Datagridview是数据表的数据绑定,它是从SQL查询填充的,而Combobox是由LinqQuery的结果填充的。

填充数据网格和排序的表单的代码隐藏

 internal static void PopulateDataGrid(Dictionary<string, string> dataGrid, DataGridView dgv, DataTable dt)
        {
            dgv.AutoGenerateColumns = false;
            foreach (KeyValuePair<string, string> row in dataGrid)
            {
                dgv.Columns[row.Key].DataPropertyName = row.Value;
            }
            dgv.DataSource = dt;
        }

Systems.PopulateDatagrid

internal static DataTable FillDataTable(string strSQL, CommandType CT, List<SqlParameter> parameters)
        {
            var ds = new DataSet("UMDS");
            DataTable dt = ds.Tables.Add("UMDT");
            ds.EnforceConstraints = false;

            using (var cn = new SqlConnection(SQLHelper.ConnectionString))
            {
                using (var cmd = new SqlCommand(strSQL, cn))
                {
                    cmd.CommandType = CT;

                    if (parameters != null)
                    {
                        DateTime dateTime;

                        foreach (SqlParameter p in parameters)
                        {
                            if (p.Value == null || string.IsNullOrEmpty(p.Value.ToString()) || p.Value.ToString() == Systems.MASKEDDATE || p.Value.ToString() == Systems.MASKEDTIME)
                            {
                                p.Value = DBNull.Value;
                            }
                            else if (DateTime.TryParse(p.Value.ToString(), out dateTime))
                            {
                                p.Value = dateTime;
                            }
                            cmd.Parameters.Add(p);
                        }
                    }

                    try
                    {
                        cn.Open();
                        using (SqlDataReader dr = cmd.ExecuteReader())
                        {
                            dt.Load(dr);
                        }

                    }
                    catch (SqlException ex)
                    {
                        Systems.Msg("Database Error", "Error Loading Data from Database. Please try again.\n\n" + ex.Message, MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
            }
            return dt;
        }

SQLHelper.FillDatatable

{{1}}

单击标题为&#34; AgentID&#34;它按ValueMember而不是DisplayMember进行排序。

1 个答案:

答案 0 :(得分:0)

回答我自己的问题:

在进行了一些谷歌搜索后管理找到另一个SO问题的答案。

Sorting DataGridView by Column.DisplayMember

相关问题