Hasan Akpürüm
blog-post-1

Dinamik UserControl Eklerken Parametre Gönderme

Merhaba arkadaşlar; Bu makalemde dinamik olarak usercontrol eklerken aynı zamanda parametre göndermeyi anlatmaya çalıştım. İşlem çok basit  UserControl mimarisini alrak kendimiz bir class oluşturuyoruz ve get set değerleri ile ViewState de değerimizi tutuyoruz.Oluşturduğumuz class adınıda usercontrol ümüzde belirtiyoruz. Bu konu ile ilgili çok fazla kaynak bulamadım açıkçası benide çok uğraştırdı. Türkçe kaynak olmadığı için sizlerle paylaşmak istedim. İlk olarak Bir Class oluşturuyoruz ve UserControl sınıfından class ımızı yaratıyoruz.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

/// <summary>
/// Summary description for Class1
/// </summary>
public class MyBaseControl : System.Web.UI.UserControl
{
    public string DEGER
    {
        get { return ViewState["MyDEGER"] as string; }
        set { ViewState["MyDEGER"] = value; }
    }

}
  Daha sonra sayfamıza  bir webusercontrol ve bir tane aspx sayfamızı atıyoruz. Siz isterseniz user controller arasındada yapabilirsiniz bu işlemi.   Default.aspx Sayfamıza bir tane PlaceHolder atıyoruz
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        for (int i = 0; i < 10; i++)
        {
            #region Properties
            MyBaseControl uc = (MyBaseControl)LoadControl("User1.ascx");
            uc.DEGER = i.ToString();
            #endregion

            PlaceHolder1.Controls.Add(uc);
        }
    }
}
User1.ascx Sayfamıza bir tane Literal atıyoruz siz ne atmak isterseniz ben Literal attım
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

//public partial class User1 : System.Web.UI.UserControl
//yerine kendi oluşturduğumuz MyBaseControl classını verdik
public partial class User1 : MyBaseControl
{
    protected void Page_Load(object sender, EventArgs e)
    {
        Literal1.Text = "Değer : "+DEGER+"</br>";
    }
}
İşte bu kadar for döngüsüne aldığımızda i den gelen her değer artık usercontrol ümüze gönderilecektir ;) Çalışma dosyasını aşağıdaki link ten indirebilirsiniz. Download_Click :)  

Yorumlar (1)

ömer | 1.7.2015

Çok beğendiğim ve uzun süredir takip ettiğim bir sitedir. Bunun gibi bir çok konuda paylaşım yapıyor ve hepsi özgün paylaşımlardır. Tavsiye ederim.

Yorum Yaz