Osman KURT

Yazılım Uzmanı | MVC Eğitmeni

ASP.Net de Türkçe Karakter Problemi ve Çözümü

ASP.Net ile hazırladığımız web projelerinde bazı zamanlar türkçe karakter problemi yaşarız. Buda hç hoş bir durum değildir. Bu durumu aşmak için webconfig dosyaından bazı ayarlamalar yapmamız gerekmektedir. Şimdi bu ayarları sizinle paylaşacağım. Gereçkten işinize çok yarayacak bir kod parçası.

<globalization requestEncoding="iso-8859-9" responseEncoding="iso-8859-9" culture="tr-TR" uiCulture="tr" fileEncoding="iso-8859-9"/>

Görüşmek Üzere,

Osman KURT

Yazılım Geliştirici ve Grafiker

ASP.Net de Veri Gösterirken Karakter Sınırlaması Getirme

Arakadaşlar bu yazımızda veri gösterirken karakter sınırlaması getirmeye değineceğim. Bu konu nerede işimize yarar  öncelikle onu anlatayım.

Mesela kurumsal bir web sayfası yapıyorsunuz. Sayfanızda ürün listelemeniz lazım. Default. sayfasında ürünün adı fiyatı ve kısa bir açıklama gelecek detay linkine tıklanıldığında ise ürünün detayına gidicek. İşte karakter sınırlaması burada işimize yarıyor. Veri girerken adminin ortalama 5000 karakter girdiğini düşünelim biz sedece bunun 200 kadarını default ta göstermek istiyoruz ki görüntü bozulmasın kullanıcı da ürün hakkında fikir edinsin. Kısaca amaç bu çok yönlü kullanılabilir kod olacak.

Lafı uzatmadan kodlarıma geçelim ve bir adet fonksiyon yazalım.Tabi ki kütüphanemizi eklemeyi unutmadan.

using System.Text.RegularExpressions;

public string metin_kisalt_yan(string metin)

    {

        metin = Regex.Replace(metin, @"<(.\n)*?>", string.Empty);

        if (metin.Length > 120) metin = metin.Substring(0, 120);

        metin = metin + "...";

        return metin;

    } 

Cs tarafımız da yazacağımız fonksiyon bu kadar. Şimdiki işlemimiz ise veriyi ne ile listeliyorsak (DataList,Repeater) o kısım da fonksiyonumuzu çağırmaya geldi.

Bu alandaki kodlarımız da alt kısımda ki gibidir.

 

<asp:DataList ID="DataList1" runat="server">

                <ItemTemplate>

                        <%#metin_kisalt_yan(Eval("Aciklama").ToString().Trim()) %>

                </ItemTemplate>

</asp:DataList>

 

Gösterirken ki kodlarımızıda yazdığımıza göre bu yazımızın da sonuna geldik.Yararlı olması dileğiyle,

Görüşmek Üzere

Osman KURT

Yazılım Geliştirici ve Grafiker

ASP.Net de E-Ticaret Sepete Ekle Uygulaması

Arakadaşlar bu yazımıda e-ticaret uyugulamalarında kullanmak üzere hazırlanan sepete ekle uygulaması bulunmaktadır. Kullanmaktan ziyade işin mantığını kavramanıza yardımcı olabilecek bir uygulama olduğunu düşünüyorum.

 Örneği eticaret.rar (3,52 kb) linkinden indirebilirsiniz.

Görüşmek üzere

Osman KURT

Yazılım Geliştirici ve Grafiker 

ASP.Net de Calender Kullanımı

Tarih olaylarında web sayfalarımızda kullanmamıza yarayacak bir araçtır calender. Çok kullanışlı bir yapısı ve kasmayan bir performansıyla biz developer ve kullanıcılara zorluk çıkarmayan bir işlevselliğe sahiptir.
Lafı uzatmadan gelelim kullanımına;
Öncelike default.aspx sayfamıza

<asp:Calendar ID="Calendar1" runat="server" ShowGridLines="True" BorderColor="Gray"
Font-Names="Verdana" Font-Size="8pt" Height="200px" ForeColor="#663399" DayNameFormat="FirstLetter"
Width="220px" BackColor="#FFFFCC" BorderWidth="1px" OnSelectionChanged="Calendar1_SelectionChanged"
CellPadding="0">
<TodayDayStyle ForeColor="White" BackColor="#FFCC66"></TodayDayStyle>
<SelectorStyle BackColor="#FFCC66"></SelectorStyle>
<NextPrevStyle Font-Size="9pt" ForeColor="#FFFFCC"></NextPrevStyle>
<DayHeaderStyle Height="1px" BackColor="Silver"></DayHeaderStyle>
<SelectedDayStyle Font-Bold="True" BackColor="#CCCCFF"></SelectedDayStyle>
<TitleStyle Font-Size="9pt" Font-Bold="True" ForeColor="#FFFFCC" BackColor="Black">
</TitleStyle>
<OtherMonthDayStyle ForeColor="#CC9966"></OtherMonthDayStyle>
</asp:Calendar>



Daha sonra kod kısmımıza geçiyoruz ve;

protected void Calendar1_SelectionChanged(object sender, EventArgs e)
{
 Response.Redirect("Sorgu.aspx?Tarih=" + Convert.ToDateTime(Calendar1.SelectedDate).ToString("yyyy/MM/dd"));
}
Bu kodlarımız bu kadar şimdi diğer sayfalarıma geçelim.
Sorgu sayfamızı oluşturuyoruz.
<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
<table>
<tr style="height: 30px;">
<td>
<a><%#Eval("AdSoyad") %></a>
</td>
</tr>
</table>
</ItemTemplate>
</asp:Repeater> 



Bu sayfamızın cs tarafı ise;

SqlConnection bag = new SqlConnection(ConfigurationManager.ConnectionStrings["marken"].ConnectionString);
protected void Page_Load(object sender, EventArgs e)
{
 SqlCommand cmdE = new SqlCommand("Select * from Musteriler where MontajGunu='" + Convert.ToDateTime(Request.QueryString["Tarih"]).ToString("yyyy/MM/dd") + "'", bag);
SqlDataAdapter da = new SqlDataAdapter(cmdE);
DataTable dt = new DataTable();
da.Fill(dt);
Repeater1.DataSource = dt;
Repeater1.DataBind();
} 


Kodlarımız bu kadararkadaşlar umarım faydalı olur.

*Calender kullanırken veritabanımız davar olan etkinlikleri takvim üzerinde işaretli şekilde göstermek istersek de;

SqlCommand cmd = new SqlCommand("Select * from Musteriler", baglan.baglanti);
if (ConnectionState.Closed == baglan.baglanti.State)
baglan.baglanti.Open();
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
Calendar1.SelectedDates.Add(Convert.ToDateTime(dr["MontajGunu"]));
}
dr.Close();
baglan.baglanti.Close(); 

 

şekilinde okutarak eklebiliyoruz. Bu olay load olayında yazılmalıdır.


Görüşmek üzere

Osman KURT

Yazılım Geliştirici ve Grafiker

ASP.Net de DataList ve Repeater için Class Oluşturmak

Arkadaşlar asp.net projemizde en çok kullandığımız şeylerdir. DataList ve Repater kullanmak. Normal yollardan bu araçları kullnarak verileri listelemek için veritabanına bağlanmak sorgumuzu yazmak datatable kullanmak gibi türlü türlü işlem yapmaktayız.Tabiki bunu bütün bağlantılarda yapıyoruz birde. Ama yacağamız bir class la bunu tamamen ortadan kaldırabiliriz. Şimdi bu yazımda size 2 adet class göstreceğim. ve bu class ları yazdıktan sonra işimizin nasıl kolaylaştığını gösreceksiniz. İlk olarak veritabanı bağlantımızı sağlamak için baglan adında bir class oluşturalım. ve içine şu kodlarımızı yazalım.

public static SqlConnection baglanti = new SqlConnection("server=loclahost;uId=kullaniciadi;database=dbadi;pwd=sifre;multipleactiveresultsets=true");

Bu classımız bu kadar artık veritabanımıza bağlanırken Connection yerine bu classımızı kullanacağız.

Şimdi sıra verileri listelememiz için kullanacağımzı classımıza geldi. Gelin onuda yazalım. Bu classımızın adıda DataListDoldur olsun.

static public DataTable DataTableAl(string sqlcumle)
{
if (baglan.baglanti.State == ConnectionState.Closed)
{
baglan.baglanti.Open();
}
SqlDataAdapter adap = new SqlDataAdapter(sqlcumle, baglan.baglanti);
DataTable dt = new DataTable();
adap.Fill(dt);
return dt;
}

Bu classımız da bu kadar arkadaşlar. Şimdiki işlemimiz bu classı kullanarak verilerimizi listelemek.

Ön sayfamızda <%#Eval("alanadi") şeklinde Datalist <ItemTemplate> içinda tanımlamalarımızı tamamldıktan sonra cs tarafında yacağımız kod şöyle;

Repeater1.DataSource = datalistDoldur.DataTableAl("select * from Sayfalar where AktifMi=1 and root=0");
Repeater1.DataBind();

DataList2.DataSource = datalistDoldur.DataTableAl("select * from Haberler where AktifMi=1 order by HaberId desc");
DataList2.DataBind();

2 yapımız daaynı şekilde kullanılmaktadır. Siz hangisini tercih ederseniz bilemem kullanmakta özgürsünüz.

Görüşmek Üzere

Osman KURT

Yazılım Geliştirici ve Grafiker

XML İçinden Şartlı Veri Çekme

Arkadaşlar artık web projelerinde xml kullanmama gibi bir şansımız kalmadı gibi birşey. Daha önceki yazılarımda xml veri oluşturmayı sizlere göstermiştim şimdi ise xml verilerinin içinden istediğimiz veriyi çekmeyi göstereceğim.

Kodlarımızı aşşağıda ki gibi kısa ve öz;

XDocument documnet = XDocument.Load(@"d:\osmankurt.xml");
            var query = from q in documnet.Element("Rehber").Elements()
                        where q.Attribute("TCNo").Value == "123456789"
                        select q;
            query.Remove();
            documnet.Save(@"d:\osmankurt.xml");

İlk olarak belirlediğimiz noktadaki xml dosyamızı load ediyoruz yani yüklüyoruz. Daha sonra içinde ki istediğimiz veriyi where  ile çekiyoruz. Mantık konusunda herhangi bir sıkıntı çekeceğinizi zannetmiyorum. Ve son aşama olarakta yeni xml verilerimizi kaydediyoruz. Tabi ister üzerine yazarsınız isterseniz yeni bir hedef oluşturabilir oaraya da yazdırabilirsiniz.

Yararlı olması dileğiyle görüşmek üzere

Osman KURT

Yazılım Geliştirici ve Grafiker 

Asp.Net de İç İçe Repeater Kullanımı

 

Genel de menu yaparken yada bir listeleme yapacağımız zaman kullanacağımız bir özelliktir. Bende daha öncelerden brojelerimde kullandım ve faydası oluyor.

Üstelik kullanımı da çok basit. İsterseniz lafı uznatmadan koldalrımızı vereyim ben.

Veritabanımız;
SayfaId
SayfaAd_tr
root

Veritabanımız bu kadar arkadaşlar ister mssql ister access kullanın fark etmez.

İlk olarak default.aspx sayfamızı tasarlmaya başlayalım.

 

<asp:Repeater ID="Repeater1" runat="server" onitemdatabound="Repeater1_ItemDataBound">
        <ItemTemplate>
            <%#Eval("SayfaAd_tr") %>
            <br />
            <asp:Repeater ID="Repeater2" runat="server">
                <ItemTemplate>
                    <%#Eval("SayfaAd_tr")%><br />
                </ItemTemplate>
            </asp:Repeater>
        </ItemTemplate>
    </asp:Repeater>

Default.aspx sayfamızda ki kodlarımız bu kadar arkadaşlar.

Şimdi ise Default.aspx.cs tarafında yzacağımız kodları görelim.

 

protected void Page_Load(object sender, EventArgs e)
{
        Repeater1.DataSource = datalistDoldur.DataTableAl("Select * from Sayfalar Where root=0");
        Repeater1.DataBind();
    }
    protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        Repeater rp = (Repeater)e.Item.FindControl("Repeater2");
        rp.DataSource = datalistDoldur.DataTableAl("select * from Sayfalar where root=" + Convert.ToInt32(DataBinder.Eval(e.Item.DataItem, "SayfaId").ToString()));
        rp.DataBind();
    }

Öncelikle ilk Repater'mızı load olayında dolduruyoruz. Ben kendim daha önceden yazdığım claslarımı kullandım sizin yapmanız gereken eğer class ınız yoksa object orianted bilginiz de yoksa önce connection sağlayıp sonra command la sorgu oluşturup bağlantıyı açarak datatable yardımıyla repeater imizi doldurabilirsiniz. yanlış hatılamıyorsam daha önceki yazılarımda bulunmakta.

Daha sonra ana repaterimizin ItemDataBound olayına üst kısımda bulunan diğer kodlarımızı yazıyorsunuz. 
İşlem bu kadar basit arkadaşlar. İsterseniz oluşturduğunuz repeater lara style verebilir görünümü daha güzel hale getirebilirsiniz.

 

Görüşmek üzere
Osman KURT
Yazılım Geliştrici Ve Grafiker

 

ASP.Net de Verileri CollectionPager ile Sayfalama

Arkadaşlar bu yazımızda projelerimizin vazgeçilmezi sayfalamadan bahsedecğim. Biliyosunuz sayfalama bir verinin gösterilirken ki en önemli öğesidir. Bizde bu yüzden projelerimizde sayfalamaya önem vermeliyiz.

Sayfalamamızı CollectionPager dll dosyamız ile yapacağız.

Lafı fazla uzatmadan ben kodlarıma geçeyim, kodlarımız çok basit arkadaşlar. İlk olarak verdiğim collectionpager.dll (32,00 kb) dll dosyasını indirip projenize referans olarak ekleyin ve toolbarınıza da çektikten sonra kodlarımızı yazmaya başlayalım.

Default.aspx sayfasında ki kodlarımız;

<asp:DataList ID="DataList1" runat="server">
     <ItemTemplate>
          <%#Eval("SayfaAd_tr") %>
     </ItemTemplate>
</asp:DataList>
<cc1:CollectionPager ID="CP1" runat="server" SliderSize="1" ShowPageNumbers="True" LabelText="Sayfa" PageSize="1" NextText="İleri" LastText="Son" BackText="Geri" FirstText="İlk">
</cc1:CollectionPager>

Ön yüzde işimiz bu kadar arkadaşlar bir adet Datalist ve eklediğimiz CollectionPager ile işi bitiriyoruz. Buradaki ayarları siz veri listeleme şeklinize göre ayarlayabilirsiniz.

Default.aspx.cs sayfamızda ki kodlarımızı ise load olayına şu şekilde yazıyoruz.

 

SqlConnection cnn = new SqlConnection("veritabanı bağlantı yolu");
SqlCommand cmd = new SqlCommand("Select * from Sayfalar", cnn);
cnn.Open();
SqlDataReader dr = cmd.ExecuteReader();
DataTable dt = new DataTable("OsmanKURT");
dt.Load(dr);
CP1.DataSource = dt.DefaultView;
CP1.BindToControl=DataList1;
DataList1.DataSource =
CP1.DataSourcePaged;
DataList1.DataBind();
cnn.Close();
 

Kodlarımız bu kadar arkadaşlar.

Umarım faydalı olur.

Görüşmek üzere

Osman KURT

Yazılım Geliştirici ve Grafiker

 

ASP.Net de Bilgisayar Kapatma, Oturum Kapatma, Bekletme,Yeniden Başlatma Kodları

Arkadaşlar işinize yarayabilecek kodlar olduğunu düşündüm ve paylaşmaya karar verdim. Birçok projede kullanabileceğiniz bir olay.

Kodlarımız;

System.Diagnostics.Process.Start("shutdown", "-s -f -t 0"); // bilgisayarı kapatma komutu 

System.Diagnostics.Process.Start("shutdown", "-l -f"); //oturumu kapatma kodları

System.Diagnostics.Process.Start("shutdown", "-r -f -t 0"); //bilgisayarı yeniden başlatmak için

 System.Diagnostics.Process.Start("shutdown", "-h -f"); // bilgisayarı hazırda beklet 

Görüşmek üzere

Osman KURT

Yazılım Geliştirici ve Grafiker 

ASP.Net de Modem Dış IP'sini Alma

Arkadaşlar modem dış IP sini almak biz her alanda fayda sağlayacak bir özelliktir. Çümkü gerek güvenlik gerekse başka alanlarda ilk akla geleceklerden biridir. Bir modemin IP sini banlayarak sitenize girmesini engellemek yada yapığınız projede panelinizde kimin hangi IP adresi ile işlem yaptığını görmek sizi gerçekten bazı durumlarda ipten alabilir.

Kodumuz çok kısa ve basittir. Yapmamız gerekn tek olay alt kısımda ki kodu istediğimiz yerde kullanmak. Yalnız verdiğim bu kodu server üzerinde denemeniz lazım aksi takdirde doğru sonucu alamıyacaksınız ve eminim ki bana laf edeceksiniz :D

Kodumuz;

HttpContext.Current.Request.UserHostAddress; 

Kodumuz bu kadar arkadaşlar, umarım faydalı olur.

Görüşmek Üzere

Osman KURT

Yazılım Geliştirici ve Grafiker