【问题标题】:C#: Add "Select" item to Dynamic Fill ComboBox methodC#:将“选择”项添加到动态填充组合框方法
【发布时间】:2017-06-10 10:03:18
【问题描述】:

我需要在不知道 DataTable 列数或名称的情况下在索引 0 处添加“选择”,因为此方法在 DataAccessLayer 中,稍后将使用`

// ComboBox Fill Method
public static void ComboBoxFill(ComboBox cbo, string Query, string cboDisplayMember, string cboValueMember)
            {
                con.Open();
                SqlCommand cmd = new SqlCommand(Query, con);
                SqlDataReader dr = cmd.ExecuteReader();
                DataTable dt = new DataTable();
                dt.Load(dr);
                cbo.DataSource = dt;
                cbo.DisplayMember = cboDisplayMember;
                cbo.ValueMember = cboValueMember;
                cbo.SelectedIndex = 0;
                con.Close();
            }

【问题讨论】:

  • DataTable dt1 = (DataTable)cbo.DataSource; int 列 = dt.Columns.Count; int rows = dt.Rows.Count;
  • 声明后如何使用 int 列和行?
  • 你发的帖子有点不清楚。不确定您是在问如何选择组合框,还是如何更新/插入数据。所以我假设你想更改数据。更改数据的正确方法是修改DataTable。你还说你不知道列或计数,所以我从 cbo 得到了列和计数。
  • 谢谢,已解决,我已添加解决方案

标签: c# methods combobox void


【解决方案1】:

我已经通过以下代码解决了这个问题。 谢谢大家...

     public static void ComboBoxFill(ComboBox cbo, string Query, string cboDisplayMember, string cboValueMember)
    {
        con.Open();
        SqlCommand cmd = new SqlCommand(Query, con);
        SqlDataReader dr = cmd.ExecuteReader();
        DataTable dt = new DataTable();
        dt.Load(dr);
        DataRow drow = dt.NewRow();
        for (int i = 0; i < dt.Columns.Count ; i++)
        {
            if (dt.Columns[i].ColumnName == cboDisplayMember)
            {
                drow[i] = "Select";
            }
            else if (dt.Columns[i].ColumnName == cboValueMember)
            {
                drow[i] = 0;
            }
            else
            {
                drow[i] = null;
            }
        }

        dt.Rows.InsertAt(drow, 0);

        cbo.DataSource = dt;
        cbo.DisplayMember = cboDisplayMember;
        cbo.ValueMember = cboValueMember;
        cbo.SelectedIndex = 0;
        con.Close();
    }

【讨论】:

    【解决方案2】:

    只需将此行放在您的 ComboBoxFill() 函数中即可。

    public static void ComboBoxFill(ComboBox cbo, string Query, string cboDisplayMember, string cboValueMember)
                {
                    con.Open();
                    SqlCommand cmd = new SqlCommand(Query, con);
                    SqlDataReader dr = cmd.ExecuteReader();
                    DataTable dt = new DataTable();
                    dt.Load(dr);
                    cbo.DataSource = dt;
    
                    DataRow newRow = dt.NewRow();
                    newRow[0] = "Select";
                    dt.Rows.InsertAt(newRow, 0);
    
                    cbo.DisplayMember = cboDisplayMember;
                    cbo.ValueMember = cboValueMember;
                    cbo.SelectedIndex = 0;
                    con.Close();
                }
    

    它将在位置0添加“选择”

    【讨论】:

    • 错误:附加信息:设置 DataSource 属性时无法修改项目集合
    • 显示错误,因为未知的列名和列数。但是已经被For解决了
    • 谢谢,已解决,我已添加解决方案
    猜你喜欢
    • 2018-12-22
    • 2016-04-27
    • 2019-11-26
    • 1970-01-01
    • 2012-07-14
    • 2016-10-16
    • 1970-01-01
    • 2014-01-19
    • 1970-01-01
    相关资源
    最近更新 更多