我有一些我維護的Web應用程序,我發現自己經常反覆寫同一代碼塊來將GridView綁定到數據源。我試圖創建一個通用的方法來處理數據綁定,但我很難讓它與Repeaters和DataLists一起工作。通過通用方法的C#ASP.NET綁定控件
這裏是通用的方法我到目前爲止:
public void BindControl<T>(T control, SqlCommand sql) where T : System.Web.UI.WebControls.BaseDataBoundControl
{
cmd = sql;
cn.Open();
SqlDataReader dr = cmd.ExecuteReader();
if (dr.HasRows)
{
control.DataSource = dr;
control.DataBind();
}
dr.Close();
cn.Close();
}
這樣,我就可以定義我的CommandText然後打個電話給「BindControls(myGridView,CMD)」,而不是重新鍵入這個相同的基本塊代碼每次我需要綁定一個網格。
問題是,這不適用於中繼器或數據列表。每個控件都從不同的類繼承它們各自的「DataSource」和「DataBind」方法。另一個論壇上的人建議我實現一個接口,但我不知道如何使這個工作。
GridView,Datalist和Repeater分別從BaseDataBoundControl,BaseDataList和Repeater類中獲取各自的「DataBind」方法。我將如何創建一個單一的界面將它們連接在一起?還是我最好只使用3個重載方法?
- 戴夫