【问题标题】:Add an item to combobox before binding data from the database在绑定数据库中的数据之前将项目添加到组合框
【发布时间】:2011-02-27 15:54:08
【问题描述】:

我有一个 Windows 窗体窗体中的组合框,它从数据库中检索数据。我做得很好,但我想在数据库中的数据之前添加第一项。我怎样才能做到这一点?我可以把它放在哪里?

public Category()
{
    InitializeComponent();
    CategoryParent();

}

private void CategoryParent()
{
    using (SqlConnection Con = GetConnection())
    {
        SqlDataAdapter da = new SqlDataAdapter("Select Category.Category, Category.Id from Category", Con);
        DataTable dt = new DataTable();
        da.Fill(dt);
        CBParent.DataSource = dt;
        CBParent.DisplayMember = "Category";
        CBParent.ValueMember = "Id";
    }
}

【问题讨论】:

    标签: c# winforms combobox


    【解决方案1】:

    您可以像这样(首选)将默认文本添加到组合框的Text 属性中:

    CBParent.Text = "<-Please select Category->";
    

    或者,您可以直接将值添加到数据表中:

    da.Fill(dt);
    DataRow row = dt.NewRow();
    row["Category"] = "<-Please select Category->";
    dt.Rows.InsertAt(row, 0);
    CBParent.DataSource = dt;
    

    【讨论】:

      【解决方案2】:
      public class ComboboxItem
      {
          public object ID { get; set; }
          public string Name { get; set; }
      
      }
      
      public static List<ComboboxItem> getReligions()
      {
          try
          {
              List<ComboboxItem> Ilist = new List<ComboboxItem>();
              var query = from c in service.Religions.ToList() select c;
              foreach (var q in query)
              {
                  ComboboxItem item = new ComboboxItem();
                  item.ID = q.Id;
                  item.Name = q.Name;
                  Ilist.Add(item);
              }
              ComboboxItem itemSelect = new ComboboxItem();
              itemSelect.ID = "0";
              itemSelect.Name = "<Select Religion>";
              Ilist.Insert(0, itemSelect);
              return Ilist;
          }
          catch (Exception ex)
          {
              return null;
          }    
      }
      
      ddlcombobox.datasourec = getReligions();
      

      【讨论】:

      • 好。现在,如果我使用匿名类型,例如: Select(x => new { Value = x.PROJECTGUID, Display = x.NAME + " - " + x.TFSPATH } 会怎么样。示例:@ 987654322@
      【解决方案3】:
       CBParent.Insert(0,"Please select Category")
      

      【讨论】:

        【解决方案4】:

        绑定数据后应添加"Please select"

        var query = from name in context.Version
                        join service in context.Service 
                        on name.ServiceId equals service.Id
                        where name.VersionId == Id
                        select new
                        {
                            service.Name
                        };
        
         ddlService.DataSource = query.ToList();
         ddlService.DataTextField = "Name";
         ddlService.DataBind();
         ddlService.Items.Insert(0, new ListItem("<--Please select-->"));
        

        【讨论】:

          【解决方案5】:

          您可以尝试两种快速方法(我现在没有方便的编译器来测试任何一种):

          1. 在绑定数据之前将项目添加到DataTable
          2. 绑定数据后,您应该可以简单地将CBParent.Text 设置为“”。它应该设置显示的文本而不会弄乱项目。

          【讨论】:

          • 亲爱的大卫,您绑定数据后无法插入项目。编译器给出此错误:“设置 DataSource 属性时无法修改项目集合。”下次在回答人们会花时间阅读的问题之前,请考虑拥有一个方便的编译器。
          【解决方案6】:
          void GetProvince()
          {
              SqlConnection con = new SqlConnection(dl.cs);
              try
              {
                  SqlDataAdapter da = new SqlDataAdapter("SELECT ProvinceID, ProvinceName FROM Province", con);
                  DataTable dt = new DataTable();            
                  int i = da.Fill(dt);
          
                  if (i > 0)
                  {           
                      DataRow row = dt.NewRow();
                      row["ProvinceName"] = "<-Selecione a Provincia->";
                      dt.Rows.InsertAt(row, 0);
          
                      cbbProvince.DataSource = dt;
                      cbbProvince.DisplayMember = "ProvinceName";
                      cbbProvince.ValueMember = "ProvinceID";
                  }
              }
              catch (Exception ex)
              {
                  MessageBox.Show(ex.Message);
              }
          }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2019-06-08
            • 1970-01-01
            • 1970-01-01
            • 2012-10-27
            • 1970-01-01
            • 2020-12-26
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多