Używam Telerik Gridview
do wyświetlania listy rekordów i mam więcej niż 10 stron, w którym używam tego GridView z tego następujący kod wspólne imprezy kopia wklejony (z niewielkimi zmianami) na wszystkich tych stronach:Jak delegować widok siatki telerik, aby uzyskać wspólne metody wywoływania ze strony nadrzędnej z każdej strony podrzędnej?
protected void Page_Load(object sender, EventArgs e)
{
DisplayRecords()
}
public void DisplayRecords()
{
//Grid view names are different on different pages.
GridView1.DataSource=Fetching records from database.
GridView1.DataBind();
}
protected void GridView1_SortCommand(object sender, GridSortCommandEventArgs e)
{
DisplayRecords()
}
protected void GridView1_PageIndexChanged(object sender, GridPageChangedEventArgs e)
{
var index = e.NewPageIndex;
DisplayRecords()
}
protected void GridView1_PageSizeChanged(object sender, GridPageSizeChangedEventArgs e)
{
var size = e.NewPageSize;
DisplayRecords()
}
to moja jedna strona, która dziedziczy z następującej strony:
public partial class LoadSettings : ParentPage
{
//Load events and other events
}
[Serializable]
public class ParentPage: RadAjaxPage
{
}
Page 1:**ttt.aspx**
public void DisplayRecords()
{
//Grid view names are different on different pages.
GridView1.DataSource=this.GetAlltttData()
GridView1.DataBind();
}
public DataTable GetAlltttData()
{
using (var context = new MyDataContext())
{
var data = from c in context.ttt select c;
return MyDataContext.LINQToDataTable(data);
}
}
Page 2:**bbb.aspx**
public void DisplayRecords()
{
//Grid view names are different on different pages.
GridView1.DataSource=this.GetAllbbbData()
GridView1.DataBind();
}
public DataTable GetAllbbbData()
{
using (var context = new MyDataContext())
{
var data = from c in context.bbb select c;
return MyDataContext.LINQToDataTable(data);
}
}
protected void rgbbb_SortCommand(object sender, GridSortCommandEventArgs e)
{
DisplayRecords()
}
protected void rgbbb_PageIndexChanged(object sender, GridPageChangedEventArgs e)
{
var index = e.NewPageIndex;
DisplayRecords()
}
protected void rgbbb_PageSizeChanged(object sender, GridPageSizeChangedEventArgs e)
{
var size = e.NewPageSize;
DisplayRecords()
}
Więc to jest możliwe, że mogę umieścić wszystkie te wydarzenia w tym ParentPage strony i po prostu zadzwonić z każdego dziecka Pag e zamiast zanieczyszczać każdą moją stronę tymi wydarzeniami?
Uwaga: W niektórych z moich stron tej DisplayRecords metod może zawiera kilka parametrów, ale reszta wszystkie zdarzenia są tak powszechne.
Nie możesz utworzyć strony głównej, której wypełnienie zawiera tę kontrolkę?możesz to również zrobić za pomocą rodzica klasy strony, ale musisz dynamicznie dodać kontrolkę do nadrzędnej kontroli w zdarzeniu "Init", aby jego cykl życia nadal działał. – Luizgrs
@Luizgrs: Nie mogę go przechowywać na mojej stronie wzorcowej, ponieważ definicje siatki różni się na każdej stronie, więc jak będę to utrzymywał, więc nie sądzę, aby rozwiązanie strony głównej było dobre. –
Strony wzorcowe mogą być "powiązane", to znaczy, że możesz mieć główną stronę główną, która używa głównej strony, a tylko te 10 stron używa drugiej strony wzorcowej. – Luizgrs