У меня есть несколько веб-приложений, которые я поддерживаю, и я очень часто пишу один и тот же блок кода снова и снова, чтобы связать GridView с источником данных. Я пытаюсь создать универсальный метод для обработки привязки данных, но у меня возникают проблемы с его настройкой для работы с повторителями и списками данных.
Вот общий метод, который у меня есть:
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 получают свои соответствующие методы «DataBind» из классов BaseDataBoundControl, BaseDataList и Repeater. Как мне создать единый интерфейс, чтобы связать их все вместе? Или мне лучше использовать 3 перегрузки для этого метода?