在建設**當中,生成下拉框本來是一件非常微不足道的事,但是在實際應用當中,我常常會碰到這樣的乙個場景:
剛開始設計時僅固定為幾個下拉選項,但是經過幾次迭代和需求更改之後,這個下拉選項會不斷地被要求改來改去。
當然,我們希望這個下拉框是動態讀取資料庫中的資料,並實現動態的後台視覺化管理,但有些場景下並不會提供一張表資料。
所以在一次開發中,我突然冒出乙個想法。借用類似dictionary的鍵值對映關係,因為下拉框元素也剛好可以看成這樣的鍵-值對的形式。
所以我自定義了乙個對映的類如下:
public class mapentity
/// /// 值
///
public string value
/// /// 是否啟用
///
public bool enable
#endregion
#region 構造方法
/// /// 預設
///
public mapentity()
/// /// 建構函式
///
/// 主鍵
/// 值
/// 是否啟用標誌, 預設啟用
public mapentity(long key, string value, bool enable = true)
#endregion
}
public enum activestatusenum : int
然後寫乙個輔助類,封裝 方法:
public class maphelper
;#region 生成下拉框元素集合
/// /// 生成下拉框元素集合
///
///
///
///
///
public static listgetdropdownlist(mapentity fillarray, long pid, bool isneedall = false )
foreach (var item in fillarray) //遍歷陣列元素生成下拉框
if (isneedall) //是否需要插入全部選項
return returnobj;
}#endregion
#region 通過
/// /// 通過鍵 獲取對映值
///
/// 集合物件
/// 指定鍵
/// 是否忽略"是否啟用"選項,預設否
/// }}
return string.empty;
}/// /// 通過鍵 獲取對映值
///
/// 集合物件
/// 值
/// 是否忽略"是否啟用"選項,預設否
/// 是否忽略大小寫,預設否
/// 如果集合中的鍵存在-999,則不適合此方法
foreach (var item in fillarray)}}
else}}
}return -999;
}#endregion
}
最後呼叫時,如下:
public class homecontroller : controller
}
所以在下次進行變更的時候,只需要設定enabled屬性,可以設定啟用或者不啟用,也可以隨時新增新的選項。這樣非常的靈活方便。
當然,這裡其實可以有另外的一種方法,那就是通過反射機制。**如下:
/// ///
///
/// 列舉物件的型別
/// 指定的列舉名稱
/// 是否需要新增全部選項
///
public static listgetdropdownlist(type enumtype, string pid, bool isneedall = false)
selobj.value = memberitem.name;
selobj.selected = isfind = memberitem.name.equals(pid);
resultobj.add(selobj);
}if (isneedall)
}return resultobj;
}
在呼叫時,只需要傳入如下引數示例:
viewdata["ddlist2"] = maphelper.getdropdownlist(typeof(activestatusenum), activestatusenum.unaudit.tostring());
雖然反射機制也是可以實現,但是卻少了一些控制上的靈活性以及多了一些效能上的損耗,相比之下,自定義的對映類,可以自定義屬性控制開關,新增額外的資訊等等。
這只是在寫**過程中一些小的思考,希望自己能有更多的這樣的思考,積少成多!加油!
dorado關於下拉框的的onSelect()方法
關於dorado中下拉框的onselect方法此方法有三個引數onselcet dropdown selectobject editor 其中selectobject 是在下拉框中選中記錄,editor是下拉框所在的autoform。通過var sobj selectedobject 可以獲取到選中...
關於Vue iview的簡單下拉框滾動載入
話不多說,直接上 作用是下拉框內容無限滾動載入 html position relative label 使用者名稱 prop username formvalidate.username disabled usenamedisable placeholder 請輸入使用者名稱 on blur cl...
java動態生成帶下拉框的Excel匯入模板
在實際開發中,由於業務需要,常常需要進行excel匯入匯出操作。以前做一些簡單的匯入時,先準備乙個模板,再進行匯入,單有十幾 二十幾個匯入模板時,往往要做十幾 二十幾個模板。而且,當在模板中需要有下拉框,而且下拉資料要實時查詢時,這樣的方法就不太好了 現在,做成了動態生成匯入模板,只要引數傳對了,就...