背景:使用asp.net開發,在編輯或新增一條記錄時,你要把你的資料一個個賦值到頁面上的控制項去如:
Job job=.....;//擷取一個Job實體
this.textbox1.Text=job.Name;
this.textbox2.Text=job.Position;
this.DropDownList1.SelectedValue=job.Grade;
....
....
由於基於bs的限制,控制項不能想cs那樣有(DataBindings)進階屬性,於是在這種情況下,我自己封裝了一個類似於中介軟體的控制項
ObjectBinding,把實體欄位和頁面上的控制項映射,實現自動綁定。
下面就示範一下,如何在asp.net上使用:
1 首先把這控制項拖拽到頁面上:
2 設定ObjectBinding的SourceType和ItemsMappings屬性
SourceType即你的實體類型,類似與ObjectDataSource空間的TypeName,會自動載入所有的類型
ItemsMappings即建立控制項與欄位的映射,都只需要下拉選擇一下就行
3 OK,基本的設定就這麼多,現在我們在後台寫些代碼:public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
ObjectBinding1.DataSource = (new ClassLibrary.Job()).getInstance();
ObjectBinding1.DataBind();
}
}
protected void Button1_Click1(object sender, EventArgs e) {
ObjectBinding1.ControlBind();
ClassLibrary.Job Job = ObjectBinding1.DataSource as ClassLibrary.Job;
Response.Write("Job.ID:" + Job.ID + "--------------Job.Name:" + Job.Name);
}
}
好了到此就能很好地顯示出來了,看看效果
到此,就簡單地介紹這麼多,至於源碼自己下載了去看吧,希望大家提些寶貴意見:)
修改: public sealed class ItemMappingCollection : System.Collections.ObjectModel.Collection<ItemMapping> 這邊以前繼承BindingList<ItemMapping> ,這樣的話,在頁面上會生一些如成itemmappings-allowedit等無用代碼
源碼下載