Başlangıç

Asp.Net ile XML Dosyasına Ekleme Yapma -2

3 Yorum


 Bir Asp.Net Web Site oluşturunuz. Ve xmldosyayakayitekle.aspx isimli bir sayfa oluşturdum. Sayfa içine bir adet buton ve bir adet label yerleştirdim. Daha önceki konuda oluşturduğumuz xml dosyasına yazmak için  Butona tıklayarak aşağıdaki kodu yazdım.

xmlresim2

using System.Xml;
using System.IO;//Bu namespaceleri mutlaka ekleyin.

protected void Button1_Click(object sender, EventArgs e)
{
if (File.Exists(Server.MapPath(“xml/KullaniciBilgirapor.xml”)))
{
XmlDocument belge = new XmlDocument();
belge.Load(Server.MapPath(“xml/KullaniciBilgirapor.xml”));
XmlElement UserElement = belge.CreateElement(“Kullanicilar”);//element ekledik
UserElement.SetAttribute(“id”, Guid.NewGuid().ToString());//elemente bir attribute atadık

XmlElement kullaniciadi = belge.CreateElement(“KullaniciAdi”);//Kullanicilar elementi içine bir kayıt ekledik
kullaniciadi.InnerText = “admin”;//kayıt için değer atadık
UserElement.AppendChild(kullaniciadi);//kayıt için parent atadık (UserElemet parenti)

XmlElement kullanimlimit = belge.CreateElement(“Limit”);//Kullanicilar elementi içine bir kayıt ekledik
kullanimlimit.InnerText = “5”;//kayıt için değer atadık
UserElement.AppendChild(kullanimlimit);//kayıt için parent atadık (Kullanicilar parenti)

belge.DocumentElement.AppendChild(UserElement);//xml dosyamıza element ve kayıtları ekledik

XmlTextWriter xmleEkle = new XmlTextWriter(Server.MapPath(“xml/KullaniciBilgirapor.xml”), null);//xml dosyamıza fiziksel olarak kayıtları yazıyoruz
xmleEkle.Formatting = Formatting.Indented;
belge.WriteContentTo(xmleEkle);//kayıtlar eklendi
xmleEkle.Close();//dosya kapatıldı
Label1.Text = “Kayıtlar Eklendi”;
}
else
{
Label1.Text=”Rapor dosyası bulunamadı.”;
}
}

Asp.Net C# Dinamik Olarak Çoklu FileUpload Kullanma ve Eklemek.

Yorum bırakın


Birden fazla FileUpload kullanma için yapacağımız işlem sayfamıza kaç tane FileUpload koymak istiyorsak tek tek eklemek olacaktır. Fakat bu yol hem uzun hem de düşünsenize her FileUpload nesnesine ayrı ayrı koşul (Dosya var mı?, Varsa uzantıları uygun mu?, Boyutu uygun mu? vb.)  oluşturmamız gerekecek.

Öncelikle türeteceğimiz FileUpload nesnelerini düzenli bir şekilde ekranda tutmak için elemanlarımızı Panele ekledik.

Daha sonra türeteceğimiz FileUpload lardan seçilen dosyaları yüklemek için bir button ekleyelim. Burada onClick olarak atadığımız eventi code behind de kullanacağız.

Buraya kadar source kısmında yapmamız gerekenleri gerçekleştirdik. Şimdi seçtiğimiz dosyaları yüklemek için bir resimler klasörü oluşturalım. Ve daha sonrasında code behind kısmına geçelim

Dinamik kontrol ekleme yazımda belirtiğim gibi Asp.Net projelerinde Page Life Cycle(Sayfa yaşam döngüsü) vardır. Her olayın bir gerçekleşme sırası mevcuttur. Bu yüzden ViewState yüklenmeden bizim kontrollerimizi eklememiz mantıklı olacaktır.  ViewState oluşmadan işlemimizi en doğru şekilde gerçekleştirebileceğimiz yer OnInit eventıdır.

*.aspx dosyası içeriği;

<asp:Panel ID=”pnlYuklemePaneli” runat=”server” Height=”184px” Width=”418px”>
</asp:Panel>
<asp:Button ID=”Button1″ runat=”server” Text=”Button” onclick=”Button1_Click” />

*.aspx.cs dosyası içeriği;

//Bu değişken fileupload nesnesinden ne kadar oluşturacağımızı tutmaktadır.
int kacAdet = 5;
protected override void OnInit(EventArgs e)
{
//Dizi olarak FileUpload nesnesini tanımlıyoruz.
FileUpload[] fuUpload = new FileUpload[kacAdet];

//Kaç adet FileUpload oluşturacaksak o kadar ekrana oluşturmasını sağlıyoruz.
for (int i = 0; i < kacAdet; i++)
{
//Nesneye FileUpload özelliğini atıyoruz.
fuUpload[i] = new FileUpload();
//Nesnenin id sini veriyorum.
fuUpload[i].ID = “fuUpload” + i.ToString();
//Ben panele eklemeyi tercih ettim siz istediğiniz ilgili bir nesneye ekleyebilirsiniz
pnlYuklemePaneli.Controls.Add(fuUpload[i]);

//Bu 3 satırlık kodu yapmamızın sebebi her FileUpload nesnesinden sonra alt satıra geçirmeyi sağlamaktadır.
Literal lblAltSatir = new Literal();
lblAltSatir.Text = “<br/>”;
pnlYuklemePaneli.Controls.Add(lblAltSatir);
}
base.OnInit(e);
}
protected void Button1_Click(object sender, EventArgs e)
{
//Toplam oluşturduğumuz FileUpload nesnemiz kadar döngü oluşturuyoruz. çünkü oluşturduğumuz tüm FileUpload nesnelerine erişmemiz gerekiyor.
for (int i = 0; i < kacAdet; i++)
{
/*Burada FileUploadları panele eklediğimiz için nesnemizi panelde bulup üzerinde işlem yapmak üzere tekrar tanımlıyoruz.
* Dikkat etmemiz gereken nokta Page_Load eventinde tanımladığımız ID ile burada tanımladığımız ID nin aynı olması gerekmektedir.
* Biz aynı olmasını sağlamak için string olarak fuUpload ve yanına her döngünün i değerini ekledik 🙂
* */
FileUpload fuUpload = ((FileUpload)pnlYuklemePaneli.FindControl(“fuUpload” + i.ToString()));

//Daha sonra tanımladığımız nesnenin boş olup olmadığını kontrol ediyoruz
if (fuUpload.HasFile)
{
/* Burada kaydetme işlemini yapıyoruz.
* resimler klasörüne FileUpload da seçilen dosyanın ismiyle doğrudan kaydediyoruz
* */
fuUpload.SaveAs(Server.MapPath(“resimler/” + fuUpload.FileName));

/*Tabi yükleneceklere herhangi bir kısıtlama koymadık. Boyut, uzantı, isim vb.
* Koydunuz koşullar çerçevesinde FileUploadlar ile dosyalarınız seçtikten sonra Yükle buttonuna basmanız durumunda klasöre dosyaları yükler.
* */
}
}
}

Kaynak:

http://www.ahmetcancicek.com/post/AspNet-Coklu-FileUpload-Kullanma

Asp.Net C# Yaşam Döngüsü ve Dinamik Olarak Nesne Eklemek.

Yorum bırakın


Asp.Net projelerinde Page Life Cycle(Sayfa yaşam döngüsü) vardır. Her olayın bir gerçekleşme sırası mevcuttur. Bu yüzden ViewState yüklenmeden bizim kontrollerimizi eklememiz mantıklı olacaktır.  ViewState oluşmadan işlemimizi en doğru şekilde gerçekleştirebileceğimiz yer OnInit eventıdır.

Asp.NET sayfaları Yaşam döngüsüne bakacak olursak;

  • Instantiate
  • Initialize (OnInit olayında gerçekleşir)
  • Load Viewstate
  • Load (Page_load olayında gerçekleşir)
  • Pre Render
  • Save Viewstate
  • Render
  • Unload

Load Viewstate olayı, Page_Load olayından önce gerçekleşmektedir.

Örneğin boş bir aspx sayfası oluşturun içine toolboxtan bir panel ekleyin ve kod bölümüne geçin ve aşağıdaki kodları yazın. 

// sayfamızın her yerinden oluşturduğumuz kontrollere erişebilmemiz için global tanımlamamız gerekiyor.
TextBox metinkutusu = null;
Button dugme = null;

protected override void OnInit(EventArgs e)
{
metinkutusu = new TextBox();
metinkutusu.ID = “Metin1”;

dugme = new Button();
dugme.Text = “Düğmenin Görünen Adı”;//butonun metni
dugme.ID = “dugme”;//idsi
dugme.Click += new EventHandler(dugme_Click); //butonumuza tıklama olayı oluşturduk

panel.Controls.Add(metinkutusu);//oluşan panele ekledik
panel.Controls.Add(dugme);//oluşan panele ekledik

InitializeComponent();//tasarım oluşturuluyor
base.OnInit(e);
}

private void InitializeComponent() // Tasarım anı desteği için gerekli
{
}

void dugme_Click(object sender, EventArgs e)
{
metinkutusu.Text = DateTime.Now.ToString();
dugme.Text += “123”;
}

Diğer bir Örnek; sayfada bir tek panel eklendi

private void labelekle()
{
int uste_uzaklik = 30;
Label[] labelarray = new Label[10];
for (int i = 0; i < labelarray.Length; i++)
{
labelarray[i] = new Label();
labelarray[i].Style[“Position”] = “Absolute”;
labelarray[i].Style[“Top”] = uste_uzaklik.ToString() + “px”;
labelarray[i].Style[“Left”] = “100px”;
labelarray[i].Font.Bold = true;
labelarray[i].Font.Name = “Verdana”;
labelarray[i].ID = i.ToString();
labelarray[i].Text = labelarray[i].ID + “.Label:”;
Panel1.Controls.Add(labelarray[i]);
uste_uzaklik += 30;
}
}
protected override void OnInit(EventArgs e)
{
labelekle();
InitializeComponent();//tasarım oluşturuluyor
base.OnInit(e);
}

private void InitializeComponent() // Tasarım anı desteği için gerekli
{
}

 

 

Bana Silverlight Anlat

meslek lisesi ders notları

Eren ÇOLAK

Yazılım Mühendisi Olmak Yolunda İlerliyor...