Osman KURT

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

MVC'li Günler Çok Daha Yakın

Başlıktan da anlaşılacağı üzere artık klasik .net yapısının dışına çıkıyorum ve mvc yazmaya başlıyorum.

Yeni çalışmaya başladığım firmada mvc üzerinde çalışmalar yapıldığı için benimde mvc öğrenmem konusunda bir fırsat doğdu. Bu yüzden vakit geçirmeden çalışmalaar başladım. Şu anda 1 hafta oldu ve klasik bir web sayfası yapma kvamına geldim. Artık işin incelikleri kısmı ile ilgilenmeye başlayacağım. Tabi ki projelerden fırsat kaldıkça. Ha bu arada blog da yine paylaşmalara devam edeceğim ama mvc olarak :D Çünkü son 1 haftadır girmediğim blog ve okumadığım yazı kalmadı diyebilirim. Diğer paylaşımcı arkadaşlara çok teşekkür ederim gerçekten işimi kolaylaştıracak bir çok kodu paylaşmışlar.

Eğer siz de mvc konusun da çalışmalar yapmak isterseniz ki bence biran önce başlayın derim geç kalmayın arkadaşlar. Çünkü iş ilanlarına göz gezdiren kişilerdenseniz beni anlıyacaksınız.

Kod dolu günler geçmesi dileği ile,

Osman KURT

Yazılım Geliştirici ve Grafiker

ASP.Net de Excelden Veri Okuma ve Okunan Veriyi SQL'e Aktarma

Bu yazımda sizlere geçen bir projemde kullanmış olduğum bir kod yapısından bahsedeceğim. Excelden veriyi okumak ve okunan veriyi sql e kod kullanarak kaydetmek.

Öncelikle sayfamıza bir adet gridview ekliyoruz. Daha sonra c# tarafımıza geçerek excelden verilerimizi çekerek gridview içine dolduruyoruz.

 

protected void Page_Load(object sender, EventArgs e)
    {
        GridView1.DataSource = getirTumATSTablo();
        GridView1.DataBind();
    }

    DataTable getirTumATSTablo()
    {
        string dosya_adres = @"D:\osmankurt.xls";
        OleDbConnection baglanti = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + dosya_adres + ";Extended Properties=Excel 8.0");
        baglanti.Open();

        string query = "select * from [Sayfa1$A1:C800] ";
        OleDbDataAdapter oAdp = new OleDbDataAdapter(query, baglanti);
        DataTable dt = new DataTable();
        oAdp.Fill(dt);
        return dt;

    }

 

Şimdi sayfamıza bir adet buton atıyoruz ve butonumuza çift tıklıyoruz. Açılan kod satırımıza alt kısımda ki kodlarımızı yazıyoruz.

 

foreach (GridViewRow row in GridView1.Rows)
        {
            SqlCommand cmd = new SqlCommand("insert into Mail (A,B) values (@A,@B)", baglan.baglanti);
            cmd.Parameters.AddWithValue("@A", row.Cells[0].Text);
            cmd.Parameters.AddWithValue("@B", row.Cells[1].Text);
            if (ConnectionState.Closed == baglan.baglanti.State)
                baglan.baglanti.Open();
            cmd.ExecuteNonQuery();
            baglan.baglanti.Close();
        }

 

Bu kodumuzda yaptığımız işlem gridview içindeki satırları tek tek dolaşarak her satırda yazılı veriyi veritabanımıza kaydetmek. Algoritması son derece basit. Aslında bu işi direk yapan kod bloklarımız var fakat ben böyle bir yöntemle okumaya gittim.

Görüşmek Üzere,

Osman KURT

Yazılım Geliştirici ve Grafiker | Ineta K12 Spekaer

ASP.Net Hava Durumu Çekmek

Bu yazımda asp.net de google apilerini kullanarak hava durumunu çekmeyi paylaşacağım. İşinize yarayacak bir işlev olarak düşünüyorum.

<div style="text-align: center;">
<asp:DropDownList ID="ddlSehirler" CssClass="bultentxt" runat="server">
<asp:ListItem>ADANA</asp:ListItem>
<asp:ListItem>ADIYAMAN</asp:ListItem>
<asp:ListItem>AFYONKARAHİSAR</asp:ListItem>
<asp:ListItem>AĞRI</asp:ListItem>
<asp:ListItem>AKSARAY</asp:ListItem>
<asp:ListItem>AMASYA</asp:ListItem>
<asp:ListItem>ANKARA</asp:ListItem>
<asp:ListItem>ANTALYA</asp:ListItem>
<asp:ListItem>ARDAHAN</asp:ListItem>
<asp:ListItem>ARTVİN</asp:ListItem>
<asp:ListItem>AYDIN</asp:ListItem>
<asp:ListItem>BALIKESİR</asp:ListItem>
<asp:ListItem>BARTIN</asp:ListItem>
<asp:ListItem>BATMAN</asp:ListItem>
<asp:ListItem>BAYBURT</asp:ListItem>
<asp:ListItem>BİLECİK</asp:ListItem>
<asp:ListItem>BİNGÖL</asp:ListItem>
<asp:ListItem>BİTLİS</asp:ListItem>
<asp:ListItem>BOLU</asp:ListItem>
<asp:ListItem>BURDUR</asp:ListItem>
<asp:ListItem>BURSA</asp:ListItem>
<asp:ListItem>ÇANAKKALE</asp:ListItem>
<asp:ListItem>ÇANKIRI</asp:ListItem>
<asp:ListItem>ÇORUM</asp:ListItem>
<asp:ListItem>DENİZLİ</asp:ListItem>
<asp:ListItem>DİYARBAKIR</asp:ListItem>
<asp:ListItem>DÜZCE</asp:ListItem>
<asp:ListItem>EDİRNE</asp:ListItem>
<asp:ListItem>ELAZIĞ</asp:ListItem>
<asp:ListItem>ERZİNCAN</asp:ListItem>
<asp:ListItem>ERZURUM</asp:ListItem>
<asp:ListItem>ESKİŞEHİR</asp:ListItem>
<asp:ListItem>GAZİANTEP</asp:ListItem>
<asp:ListItem>GİRESUN</asp:ListItem>
<asp:ListItem>GÜMÜŞHANE</asp:ListItem>
<asp:ListItem>HAKKARİ</asp:ListItem>
<asp:ListItem>HATAY</asp:ListItem>
<asp:ListItem>IĞDIR</asp:ListItem>
<asp:ListItem>ISPARTA</asp:ListItem>
<asp:ListItem>İSTANBUL</asp:ListItem>
<asp:ListItem>İZMİR</asp:ListItem>
<asp:ListItem>KAHRAMANMARAŞ</asp:ListItem>
<asp:ListItem>KARABÜK</asp:ListItem>
<asp:ListItem>KARAMAN</asp:ListItem>
<asp:ListItem>KARS</asp:ListItem>
<asp:ListItem>KASTAMONU</asp:ListItem>
<asp:ListItem>KAYSERİ</asp:ListItem>
<asp:ListItem>KIRIKKALE</asp:ListItem>
<asp:ListItem>KIRKLARELİ</asp:ListItem>
<asp:ListItem>KIRŞEHİR</asp:ListItem>
<asp:ListItem>KİLİS</asp:ListItem>
<asp:ListItem>KOCAELİ</asp:ListItem>
<asp:ListItem>KONYA</asp:ListItem>
<asp:ListItem>KÜTAHYA</asp:ListItem>
<asp:ListItem>MALATYA</asp:ListItem>
<asp:ListItem>MANİSA</asp:ListItem>
<asp:ListItem>MARDİN</asp:ListItem>
<asp:ListItem>MERSİN</asp:ListItem>
<asp:ListItem>MUĞLA</asp:ListItem>
<asp:ListItem>MUŞ</asp:ListItem>
<asp:ListItem>NEVŞEHİR</asp:ListItem>
<asp:ListItem>NİĞDE</asp:ListItem>
<asp:ListItem>ORDU</asp:ListItem>
<asp:ListItem>OSMANİYE</asp:ListItem>
<asp:ListItem>RİZE</asp:ListItem>
<asp:ListItem>SAKARYA</asp:ListItem>
<asp:ListItem>SAMSUN</asp:ListItem>
<asp:ListItem>SİİRT</asp:ListItem>
<asp:ListItem>SİNOP</asp:ListItem>
<asp:ListItem>SİVAS</asp:ListItem>
<asp:ListItem>ŞANLIURFA</asp:ListItem>
<asp:ListItem>ŞIRNAK</asp:ListItem>
<asp:ListItem>TEKİRDAĞ</asp:ListItem>
<asp:ListItem>TOKAT</asp:ListItem>
<asp:ListItem>TRABZON</asp:ListItem>
<asp:ListItem>TUNCELİ</asp:ListItem>
<asp:ListItem>UŞAK</asp:ListItem>
<asp:ListItem>VAN</asp:ListItem>
<asp:ListItem>YALOVA</asp:ListItem>
<asp:ListItem>YOZGAT</asp:ListItem>
<asp:ListItem>ZONGULDAK</asp:ListItem>
</asp:DropDownList>
<br />
<span id="spnIkon" class="ikon" runat="server"></span>
<br />
<span id="spnDerece" class="derece" runat="server"></span>
<br />
<span id="spnDurum" class="durum" runat="server"></span><span id="spnNem" class="nem"
runat="server"></span>
<br />
<span id="spnRuzgar" class="ruzgar" runat="server"></span>
</div>

 

C# Kısmında ise;

 

try
            {
                string strGelenIl = Request.QueryString["Il"];
                if (string.IsNullOrEmpty(strGelenIl))
                {
                    strGelenIl = "KONYA";
                }
                WebClient webClient = new WebClient();
                string strKaynak = webClient.DownloadString("http://www.google.com/ig/api?weather=" + strGelenIl + "&hl=tr");
                TextReader trOkuyucu = new StringReader(strKaynak);
                webClient.Dispose();

                ddlSehirler.Attributes.Add("onchange", "location.href='?Il='+this.value+''");
                ddlSehirler.SelectedValue = strGelenIl;

                XmlTextReader rdr = new XmlTextReader(trOkuyucu);
                XmlDocument myxml = new XmlDocument();
                myxml.Load(rdr);
                XmlNodeList xnlHedef = myxml.SelectNodes("xml_api_reply/weather/current_conditions");

                string strDerece = xnlHedef.Item(0).SelectSingleNode("temp_c").Attributes["data"].InnerText;
                string strDurum = xnlHedef.Item(0).SelectSingleNode("condition").Attributes["data"].InnerText;
                string strNem = xnlHedef.Item(0).SelectSingleNode("humidity").Attributes["data"].InnerText;
                string strIkon = "<img src=\"http://www.google.com/" + xnlHedef.Item(0).SelectSingleNode("icon").Attributes["data"].InnerText + "\" alt=\"" + strGelenIl + "\" />";
                string strRuzgar = xnlHedef.Item(0).SelectSingleNode("wind_condition").Attributes["data"].InnerText;
                spnIkon.InnerHtml = strIkon;
                spnDurum.InnerText = strDurum;
                spnDerece.InnerText = strDerece + " °C";
                spnNem.InnerText = strNem;
                spnRuzgar.InnerText = strRuzgar;

                trOkuyucu.Dispose();
                rdr.Close();
                rdr = null;
                myxml = null;
                xnlHedef = null;
            }
            catch (Exception)
            {

            }

 

Kaynak Kod GoogleHava_OsmanKURT.rar (63,52 kb)

Kaynak Kod Yahoo: havadurumuYahoo.rar (750,71 kb)

Yazımız bu kadar arkadaşlar görüşmek üzere

Osman KURT

Yazılım geliştirici ve grafiker

ASP.Net de Dosyaların İçeriğini Okuma Değiştirme ve Kaydetme

Bu yazımda asp.net projelerimizde hiçbir şekilde ftp ye müdahale etmeden belirlediğimiz dosyalar üzerinde değişiklik yapma imkanı sağlayan kod bloğumuzu göstereceğim. Bu kod bloğunun bize şöyle faydası olabilir. Bitmis bir proje üzerinde ani bir değişiklik yapma durumumuz oldu diyelim. Ne yapıcaz? Ftp bilgilerininde olmadığını varsayarsak daha önceden projemize entegre ettiğimiz bir sayfada listeden değişiklik yapacağımız sayfayı seçmek suretiyle sayfa üzerinde her türlü değişikliği yapabiliriz.

Kod bloğumuz alt kısımda ki gibidir.

protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            DirectoryInfo dosyalar = new DirectoryInfo(Server.MapPath("~/"));
            Repeater1.DataSource = dosyalar.GetFiles("*.htm");
            Repeater1.DataBind();
            if (Request.QueryString["degistir"] != null)
            {
                duzeltme.Visible = true;
                string degistirilecek = Request.QueryString["degistir"];
                StreamReader oku = new StreamReader(Server.MapPath("~/" + degistirilecek), System.Text.Encoding.Default);
                TextBox1.Value = oku.ReadToEnd();
                oku.Close();
                oku.Dispose();
            }
        }
    }
    protected void Button_kaydet_Click(object sender, EventArgs e)
    {
        string yazilacak = Request.QueryString["degistir"];
        StreamWriter yaz = new StreamWriter(Server.MapPath("~/" + yazilacak), false, System.Text.Encoding.Default);
        yaz.Write(TextBox1.Value);
        yaz.Close();
        yaz.Dispose();
        Label1.Text = "Değiştirme Başarılı.";
    }


Görüşmek Üzere

Osman KURT

Yazılım Geliştirici ve Grafiker

ASP.Net de Açılır Menu Yapımı

Arkadaşlar bu yazımda sizler için asp.net de yaptığım bir dinamik açılır menü örneği göstereceğim. Eminim ki birçok arkadaşın işine yarayacak bir kod. Zaten bugün içinde aldığım bir mailden dolayı bu kodu paylaşma gereği duydum.
Alt tarafta genel görünümle alakalı bir resim paylaşıyorum. Kodlar gayet açık bir adet default ve bir adet sayfadetay sayfası mevcut. Access veri tabanı kullandım ve içinde birkaç örnek veri mevcut. Yararlanan arkadaşlardan görüş dönüş bekliyorum.

 

AcilirMenu.rar (124,21 kb)

Görüşmek üzere,

Osman KURT

Yazılım Geliştirici ve Grafiker | İneta K12 Speaker

Asp.Net de Toplu Mail Göndermek

Bu yazımda sizlere asp.net de toplu mail göndermeyi göstereceğim. Bu kod yaptığımız projelerde lazım olabilir. Örnek vermek gerekirse sayfanız da bülten kaydı tutuyorsunuz ve kayıt olan kişilere mail gönderme ihtiyacı duydunuz. Hepsine tek tek gönderecek değilsiniz. Böyle bir işlem ile karşı karşıya kaldığınız da bu kod bloğunu kullanabilirsiniz.

Kısaca mantığını anlatmak gerekirse normal bir mail gönderme formu ve tablomuzda tutuğumuz mail listesini döngüye sokarak tek tek okutmak.

 

using System.Net.Mail;
using System.Net;
using System.Data;
using System.Data.SqlClient;
SmtpClient mailClient = new SmtpClient(server, port);
        NetworkCredential cred = new NetworkCredential(mail, sifre);
        mailClient.Credentials = cred;
        MailMessage contact = new MailMessage();
        contact.From = new MailAddress(mail);
        contact.Subject = txtkonu.Text;
        contact.IsBodyHtml = true;
        contact.Body = EditorIcerik.Content;

        SqlConnection cnn = new SqlConnection(@"yol");
        SqlCommand bulten = new SqlCommand("Select * from tabloadi", cnn);
        if (ConnectionState.Closed == cnn.State)
            cnn.Open();
        SqlDataReader bdr = bulten.ExecuteReader();
            while (bdr.Read())
            {
                contact.Bcc.Add(bdr["Mail"].ToString());
            }
        mailClient.Send(contact);
        bdr.Close();
        cnn.Close();

Proje Linki; OsmanKURT_TopluMail.rar (71,36 kb)

Kodlarımız bu kadar arkadaşlar.

Görüşmek üzere

Osman KURT

Yazılım Geliştirici ve Grafiker  | INETA K12 Speaker

Ineta K12 WebCamp Günlüğü 2.Gün

Arkadaşlar bugün ineta k12 webcamp 2. günü de geride bıraktık. Bugün gelen arkadaşlara asp.net üzerinde uygulama geliştirme konusunda bir sunum yaptım. Sunum dahilinde örnek bir uygulama gerçekleştirldi. Gelen arkadaşların asp.net konusunda bilgi sahibi olmaması biraz konu dahilinde zorluk çıkarsa da herkes açısından faydalı olduğu aşikar.
Ayrıca gelen arkadaşların etkinlikten memnun kaldığı ve daha sonra yapılacak olan etkinliklerde programa kendi okullarının da dahil edilmesi konusunda ısrarcı olmaları hem beni hemde diğer konuşmacı arkadaşım Yusuf KARAKAŞ'ı ayrıca mutlu etti.

Gelen bütün arkadaşlara teşekkür ediyorum. Alt kısım da etkinliğe ait bazı resimleri bulabilirsiniz.

 

Görüşmek Üzere

Osman KURT

Yazılım Geliştirici ve Grafiker | INETA K12 SPEAKER

Asp.Net de Table'yi Kod Taraflı Kontrol Etmek

Asp.net de proje geliştiriyorsunuz ve html tarafında table kullanıyorsunuz. Herhangi bir veriyi göstereceğiniz yada saklayacağınız zaman panel kullanıp panelin visible kısmını true,false diyerek kontrol ediyorsunuz. Ama bunu yapmanıza gerek yok.
Çünkü html tarafında table kullanırken <table> kısmı yerine <table id="osmankurt" runat="server"> dediğimiz takdirde aynı panel gibi işlev görecektir. Hem daha performanslı hem karşıklığı önleyen bir kullanım bence.

Görüşmek Üzere

Osman KURT

Yazılım Geliştirici ve Grafiker

ASP.Net de Performans Artışı Sağlamak (1.Bölüm)

Asp.net de proje geliştiriyorsak performansın ne kadar önemli bir etken olduğunu söylememe gerek yok sanırım. Çünkü kullanıcı her ekstra süre için siteden bir adım daha uzaklaşır.

Bu yazımda size ufak bir tavsiyede bulunacağım. Biliyorsunuz ki çoğu yaptığımız işlemlerde verileri geçici şekilde browser larımızda saklanır. Ne kadar çok veri saklanırsa browser'ın verimi de o kadar düşer. İşte bu yazının amacı birazda olsa browser ları bu yükten kurtarmak. Mesela sayfamızda 2 adet textbox'ımız olsun ve bu 2 textbox daki değeri lblsonuc adlı labelimizin text ekranına yan yana yazdıralım. Bu işlem çok kolay bir işlem ve bu işlemi tamamladığımız da label ekranına sonucu yazdırırken aslında 2 textboxın içinde ki değerlerinde aynı kaldığını gördük. Bu yazılar nasıl oldu da sayfa yenilendiği halde textboxların içinde yazılı kaldı. İşte burada viewstate dediğim cache ortaya çıkıyor ve verileri belleğinde saklıyor. Bunlarda projeye ekstra yük oluyor. Bunun gibi işlemleri yaptığımız sayfalarda verilerin viewstate de salanması çok saçma bu yüzden bunu engellemek gerek. Bunu da sayfamızın en yukarasında ki;

<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true"
CodeFile="Default.aspx.cs" Inherits="_Default" %>

 

kısmından yapıyoruz.(Benim Örneğim bu sizin ki farklılk gösterbilir, MasterPage sayfası referans alınmış bir Default.aspx sayfası.)

Bu satıra ek olarak alt kısımda ki çizgili alan gibi yapmamız yeterli olacaktır.

<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true"
CodeFile="Default.aspx.cs" EnableViewState="false" Inherits="_Default" %>

 

 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