Aklımda Kalası Kelimeler

* давайте работать вместе
* Zarf ve Mazruf, Zerafet(xHoyratlık) ile aynı kökten(za-ra-fe) gelir
* Bedesten
* Suç subuta ermiştir - Suç sabit olmuştur

14 Ağustos 2011 Pazar

Basit bir dll'i WebControl olarak ASPX sayfanızda Kontrol gibi göstermek.

Herşey bir sınıfsa (%100 OO), o zaman bir web control'ü de sınıf olmalı. Demek ki bir Class Library projesi işimizi görecek, custom server side web control yapmamız için.

Tek olayımız, sınıfımızın webde görünmesi için onun Render gibi bir metoda ya da CreateChildControls diye başka bir metoda ihtiyacımız olmasıdır(CreateChildControls metodunu atıyorda olabilirim).

Sınıfımızı WebControl'den türettim ve içinde Render metodunu gördüm. Ona da ekranda görüldüğünde belli olsun diye birşeyler yazdım.

using System.Web.UI;

using System.Web.UI.WebControls;

namespace Cem.Controls.WebKontrol
{
public class CemKontrol:WebControl
{
protected override void Render(HtmlTextWriter writer)
{
base.Render(writer);
writer.Write("
CEMMMMMM
");
}
}
}


Şimdi bu sınıftan oluşan dll dosyamı (GAC'a yüklesem güzel olurdu ama çöplük değil GAC'ım) web application/web site projeme referanslıyorum(web site'da denemedim ama onada referanslarım herhalde).

Bu arada Render metodumuzdan biraz bahsedelim. protected override void Render(HtmlTextWriter writer) metodumuzun içinde this.Controls.Add(new Label(){ Text="<p style='color:orange'>Portakal Ağacı ektim buraya</p>" }); diyebiliriz. Ama bu Label'ın ekranda çıkması için base.Render(writer); metod çağrısını en altta yapmamız gerekiyor.

Sonrada Default.aspx dosyamı aşağıdaki gibi düzenliyorum:
<%@ Page Language="C#" 

AutoEventWireup="true"
CodeBehind="Default.aspx.cs"
Inherits="WebApplication1._Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%@ Register Assembly="Cem.Controls.WebKontrol, Version=1.0.0.0, Culture=neutral, PublicKeyToken=026d3b7fdfbc431f"
Namespace="Cem.Controls.WebKontrol"
TagPrefix="cc" %>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<cc:CemKontrol runat="server" ID="ccccem" />
</div>
</form>
</body>
</html>


Sonuçta istediğimi aldım:



Şimdi birde CenkKontrol.cs isminde sınıf dosyasını DLL imize ekleyip web sayfamızda gösterelim:

Sonucumuz:

Bu durumda özetimizde Yunus Emre'den:
girdim ilim meclisine, eyledim kıldım talep
dediler ilim geride, illa edep illa edep.


Bu da güzel bir kaynak: Walkthrough: Creating a Web Custom Control

Hiç yorum yok: