, iki seçeneğiniz vardır.
2.) Özel ızgaralarınız için kullanıcı denetimleri oluşturun ve bunları kullanın.
Bir UserControl kullanmak istemediğinizi söylediğinizi biliyorum çünkü bu, düzeninizi dinamik olarak değiştirme yeteneğinizi ortadan kaldıracaktır, ancak bu ön örneklemi bir örnekle sorgulamama izin verin.
Kullanıcı denetimlerini PlaceHolder Control kullanarak istediğiniz gibi dinamik olarak değiştirmek için yerleşik ASP.Net özelliklerini kullanabilirsiniz.
<asp:PlaceHolder ID="GridViewPlaceHolder" runat="server" />
Size özel ızgaralar şöyle çalışma zamanında dinamik olarak .ascx dosyalarındaki bildirimli inşa edilmiş ve daha sonra yerine yüklenebilir:
GridViewPlaceHolder.Controls.Add(LoadControl("~/Controls/MyCustomControl.ascx"));
Şimdi, gerçekten o, hayatınızı kolaylaştıracak istiyorsanız Tüm özel ızgara denetimlerinizin devralacağı soyut bir temel sınıf oluşturabilir. Bu şekilde, kontrolleriniz yüklendiğinde genel olarak tedavi edilebilir.
public abstract class CustomGridControl: System.Web.UI.UserControl
{
public abstract Object DataSource { get; set; }
}
Basit ızgara işaretlemesindeki tanımlanabilir:
<asp:GridView ID="myGridView" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:TemplateField HeaderText="Name">
<ItemTemplate>
<asp:Label Text='<%#Eval("Name") %>' runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Age">
<ItemTemplate>
<asp:Label Text='<%#Eval("Age") %>' runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
Ve bu kontrol için geride kodunuzu şöyle görünecektir: kullanmaktadır
Şimdi
public partial class SimpleGrid : CustomGridControl
{
public override object DataSource
{
get { return myGridView.DataSource; }
set { myGridView.DataSource = value; }
}
}
sayfası veya denetim Bu sadece temel sınıfa vermeli ve bunu genel olarak kullanabilirsiniz. Aşağıdaki bunu nasıl kullanabileceğinize ilişkin basit bir örnek, ama açıkça noktası oluşturur düşünüyorum: orada Yani
protected void Page_Load(object sender, EventArgs e)
{
var dataSource = new List<MyCustomClass>
{
new MyCustomClass{Name = "Josh", Age = 43},
new MyCustomClass{Name = "Bob", Age = 14},
new MyCustomClass{Name = "Ashley", Age = 32},
};
DynamicallyLoadUserControlGrid("~/GridViewTemplates/SimpleGrid.ascx", dataSource);
}
private void DynamicallyLoadUserControlGrid(String controlLocation, List<MyCustomClass> dataSource)
{
var ctrl = (CustomGridControl)LoadControl(controlLocation);
ctrl.DataSource = dataSource;
ctrl.DataBind();
GridViewPlaceHolder.Controls.Add(ctrl);
}
, onu var. Tüm bunları baştan çıkarmaya çalışan özel baştan çıkarıcı kodlar, hepsini manuel olarak kodda oluşturmaya çalışıyor. Ben tamamen manuel yolunu bunu başka bir cevapta yayınlayacağım, ama bir kez gördüğünüzde, bu yöntemin tercih edildiğini kabul edersiniz.
Farklı tasarım şablonu şablonunu değiştirmek istiyor musunuz? –
evet, farklı tasarım şablonlarına sahip olmak ve bunları dinamik olarak değiştirebilmek için – Albert