1. 程式人生 > >在Datagridview控制元件利用下拉選單進行列舉資料輸入

在Datagridview控制元件利用下拉選單進行列舉資料輸入

在Datagridview控制元件利用下拉選單進行資料輸入可以使使用者操作更加方便,在配置COMBOX控制元件時,只要設定了datasource, displaymember,valuemember,即可實現comboxbox的資料輸入,如:

  有一個類如下:

    public class Class1
    {
        string _Name;

        public string Name
        {
            get { return _Name; }
            set { _Name = value; }
        }
        int _Weight;

        public int Weight
        {
            get { return Weight; }
            set { Weight = value; }
        }

    }

  如果存在集合List<Class1> P1

  定義一個Combobox1.DataSource= P1;

          Combobox1.DisplayMember="Name";

          ComboBox1.ValueMember="Weight";

   這樣,在獲取Combobox1.SelectedItem時,獲取的是物件的Weight值,

  而如果將combobox的datasource繫結一個列舉enmu的話,不用設定displaymember及valuemember即可通過selectedItem獲得列舉值。

  對於一個列表控制元件Dgv_ClassTest,要新增DataGridViewComboBoxColumns,也可以採用同樣方法,如將下拉選單了的資料來源對應valuememeber設為Class1,則該列新增的單元格的型別也必須是Class1型別,因此我們要對原有的Class1進行一下改造:

    public class Class1
    {
        string _Name;

        public string Name
        {
            get { return _Name; }
            set { _Name = value; }
        }
        int Weight;

        public int Weight1
        {
            get { return Weight; }
            set { Weight = value; }
        }
        public Class1 Class1
        {
            get
            {
                return This;
            }
        }

    }

   這樣在選中一項紀錄時,就可以按如下方式配置列:

   CmbCol.DataSource=P1;

   CmbCol.DisPlayMember=="Name";

   CmbCol.ValueMember="Class1";

   假設存在一個類如下:

    public class Class2
    {
        private Class1 _C1;

        public Class1 C1
        {
            get { return _C1; }
            set { _C1 = value; }
        }
        private string _Name;
        public string Name
        {
            get
            {
                return _Name;
            }
            set
            {
                _Name = value;
            }
        }
    }

    有一個該類的集合BindingList<Class2> P2對列表進行繫結

    Dgv_ClassTest.Datasource=P2;

    CmbCol.DataBoundItem="C1";

    NameCol.DataBoundItem="Name";

    這樣P2集合就可以通過列表控制元件進行資料的輸入輸出了。

   但對於列舉,因為無法設定DisplayMember和ValueMember, 因此繫結時會報值無效的錯誤,網上國內國外的帖子的解決方法都是重寫dataerorr事件,當這是個餿主意,因為異常發生了,就得解決,丟擲去不理怎們行,況且這樣簡單拋掉,其他錯誤也會拋掉,反而不利於排錯。

  我的解決方法是,將列舉重新打包成一個新的靜態類,比如,我們將KnownColor列舉包裝如下:

  public  class MyKnownColor
    {
       private KnownColor _color;
       private static List<MyKnownColor> _ColorList;

       public static List<MyKnownColor> ColorList
            {
                get
                {
                    if (_ColorList == null)
                    {
                        _ColorList = new List<MyKnownColor>();
                        Array xx = Enum.GetValues(typeof(KnownColor));
                        MyKnownColor p = null;
                        foreach (KnownColor x in xx)
                        {
                            p = new MyKnownColor(x);
                            ColorList.Add(p);
                        }
                    }
                    return MyKnownColor._ColorList;
                }
            }

            public MyKnownColor  Color
            {
                get { return this ; }
            }
            private  MyKnownColor(KnownColor c)
            {

                _color = c;
            }

          public  string Name
            {
                get
                {
                    return _color.ToString();
                }
            }
       public KnownColor KnownColor
       {
           get
           {
               return _color;
           }
       }
       public int Index
       {
           get
           {
               return _color.GetHashCode()-1;
           }
       }
    }

    這樣再將重新包裝的類繫結到下拉列,就可以實現列舉在列表中的選擇了。

相關推薦

Datagridview控制元件利用選單進行列舉資料輸入

在Datagridview控制元件利用下拉選單進行資料輸入可以使使用者操作更加方便,在配置COMBOX控制元件時,只要設定了datasource, displaymember,valuemember,即可實現comboxbox的資料輸入,如:   有一個類如下:     pu

在visual studio 2017用xamarin for android 做個簡單的註冊頁面,包含單選控制元件,多選控制元件選單控制元件

照著牛腩老師的視訊,自己做了個註冊頁面,實現了簡單的單選控制元件、多選控制元件、下拉選單控制元件的使用,由於日曆控制元件太醜,就不模仿了,下面就是reg.axml的佈局效果,後面是程式碼。 , <?xml version="1.0" encoding="utf-8"?

通過ajax動態載入select控制元件框】的option

一、JS方式 關鍵程式碼: <select id="ddlResourceType" onchange="getvalue(this)"></select> var objSelect = document.getElementById("ddlR

樹形控制元件框,listbox的用法

  MFC樹控制元件的簡單入門   本文簡單介紹了有關MFC中樹形控制元件的最基本的用法,鑑於水平有限,僅希望能夠讀者通過簡單的程式設計例項,起到對樹形控制元件入門之目的。因為筆者對MFC知識點的學習也都是從例項中學習,這樣效率會相對較高,好了不說廢話了,開始… 1.   

C# winfrom Datagridview控制元件選單

拖拽一個datagridview放在介面,編輯列把下來選單那列ColumnType設定成DataGridViewComboBoxColumn 然後在資料一欄的Items可以寫下來選單的內容也可以後臺程式碼寫 下面是後臺程式碼實現功能 private void dgUserAuthData_Edi

DataGridView控制元件中顯示列表

實現效果:      知識運用:   DataGridViewComboBoxColumn類  //通過該類可以建立下拉列表樣式的列 實現程式碼: private void Form1_Load(object sender, EventArgs e)

重新整理控制元件包裹的ListView側滑出選單的實現

package com.moopoo.widget; import android.content.Context; import android.support.v4.widget.SwipeRefreshLayout; import android.util.AttributeSet; import

Android使用控制元件Spinner實現選單列表

實現效果如下: 1.實現程式碼 package com.example.testspanner; import java.util.ArrayList; import java.util.Li

使用語句控制DEV選單

1、DevExpress.XtraEditors.LookUpEdit的基本用法 public void InitLookUpEditor()     {         //        

選單按鈕元件

<div class="dropdown"> <button class="btn btn-default" data-toggle="dropdown" > Dropdown <span class="caret"><

【Bootstarp】詳解選單元件

文章目錄 下拉框 下拉分隔線 選單標題 選單項狀態 下拉框 1.引入js @*1、Jquery元件引用*@ <script src="~/Scripts/jquery-1.10.2.js"></s

利用二維陣列建立動態選單&購物簡易計算器

1.利用二維陣列建立動態下拉選單 <!doctype html> <html> <head> <meta charset="utf-8"> <title>實戰</title> <scr

CASE----使用Timer控制元件DataGridView控制元件中的資料進行更新

問題引入         DataGridView控制元件可以將集合中的資料值以表的形式顯示,由於DataGridView是靜態控制元件,從而存在當集合中的資料值發生變化時,DataGridView控制元件不會隨著集合中資料的變化而變化。 解決思想         Ti

C#:DataGridView控制元件的使用。繪製行號。新增右鍵選單

1.簡單使用 using System; using System.Collections.Generic; using System.Windows.Forms; namespace WindowsFormsApp17 { public partial class Form1 : F

iOS點選選單的實現(利用UITableView + UIButton + UILabel)

我們在學習的過程中,可能會遇到需要新增下拉選單功能的時候,有的小夥伴可能一時半會想不出來怎樣實現,那麼我今天就來給大家分享一下我的方法 先看一下效果圖 左邊是一個UIButton,點選前是如下效果 這是點選星期三後的效果 這樣,就實現

第三方控制元件:上載入、重新整理控制元件

使用: (1)匯入第三方外掛庫 Android-PullToRefresh-master.zip (2) 在佈局檔案中使用第三方外掛 com.handmark.pulltorefresh.library.PullToRefreshListView (3) 自定

android利用PopupWindow實現點選工具欄彈出選單

package com.example.dropdownmenu; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.os.Bu

32.利用UIViewAnimation動畫製作一個簡單的選單

在部分App裡, 我們會看到左上角或者右上角都會有一個按鈕, 點選之後就會出現一個簡易的小選單, 有人問這個怎麼實現呢, 讓我們來看看. PS: 已經更新到Swift 2.1, 支援iOS 9.1 1.介面佈局 在ViewController的

利用Jquery實現二級選單

     最近在學習前端的內容:看到別人做的二級選單挺好看的。下載別人的Demo看起來比較麻煩,所以就嘗試了自己做一個簡單二級下拉選單: 效果圖如下: 下拉選單實現後的效果圖: 沒有做什麼美化,只是從功能上實現下拉選單 HTML程式碼: <!DOCTYPE ht

IOS使用UItableView實現選單元件(UITableView的使用方法)

一. 基礎版本 在登陸介面有時需要儲存已經登陸的賬號資訊,可以點開一個下拉選單選擇儲存的賬號,這裡是用UIKit的表格元件編寫一個下拉選單元件demo,實現思路如下: 1.首先在一個UIViewController裡放一個按鈕或者標籤框,用來顯示當