GridView içindeki kontrole erişme (Findcontrol)

İki önceki yazımızda gridview içerisine templatefield içerisinde textbox eklemiştik. Bu yazımızda kontrol içerisindeki kontrollere nasıl erişebiliyoruz buna bakacağız. Konu bütünlüğü bozulmasın diye gridview içerisindeki kontrollere erişmeye çalışıp, çeşitli denemeler yapacağız. Örnekte kullnacağımız gridviewimiz şu şekilde.

        <asp:GridView runat="server" ID="GridView1" CssClass="grid" ShowFooter="true" AutoGenerateColumns="false">
            <HeaderStyle CssClass="header" />
            <RowStyle CssClass="row" />
            <AlternatingRowStyle CssClass="alternate" />
            <FooterStyle CssClass="footer" />
            <PagerStyle CssClass="pager" />
            <Columns>
                <asp:BoundField DataField="id" HeaderText="Id" />
                <asp:BoundField DataField="tarih" HeaderText="Tarih" />
                <asp:BoundField DataField="sessionid" HeaderText="Oturum Kimliği" />
                <asp:TemplateField HeaderText="Bu bir checkbox">
                    <ItemTemplate>
                        <asp:CheckBox runat="server" ID="cbCheckBox" />
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Bu bir textbox">
                    <ItemTemplate>
                        <asp:TextBox runat="server" ID="txtTextBox" />
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Bu bir literal">
                    <ItemTemplate>
                        <asp:Literal runat="server" ID="ltrLiteral" Text='<%#Eval("id") %>' />
                    </ItemTemplate>
                    <FooterTemplate>
                        <asp:Button runat="server" ID="btnGonder" Text="Gönder" OnClick="btnGonder_click" />
                    </FooterTemplate>
                 </asp:TemplateField>
             </Columns>
        </asp:GridView>

Okumaya devam et GridView içindeki kontrole erişme (Findcontrol)

GridView ile çalışmak ve püf noktaları

Uzun bir aradan sonra kontrollerimizi tanımaya kaldığımız yerden devam ediyoruz. Ana hatlarıyla anlatmaya çalışacağım kontrol namı diğer GridView1 :) Çok fazla detaya girmeden en sık kullanılan özelliklerini ve jQuery ile birlikte neler yapabileceğimize vakit kaybetmeden bir göz atalım.

GridView, bir veri kaynağından gelen veriyi ekrana liste şeklinde basan kontrolümüz. Bir çok yerde kullandığımız bu kontrolde, sayfalama ve sıralama işlemlerini rahatlıkla yapabiliyoruz. Okumaya devam et GridView ile çalışmak ve püf noktaları

Asp.Net Kontrolleri Bölüm 1

Bu yazımda label, literal, textbox ve button kontrollerini (control) anlatmaya çalışacağım. Bu yazı dizisinde ki amacım yeni başlayan arkadaşlara yardımcı olabilmek, akıllarına takılan noktalarıda sorarak öğrenmelerini sağlamak. Kontrollerin anlatağım özellikleri en çok kullanılan özellikleridir. Lafı daha da uzatmadan başlayalım.

Microsoft Asp.Net ile birlikte web form adını verdiği yeni bir çalışma mantığıyla, alışıla gelmiş web geliştirme yöntemlerinin dışına çıktı. Web form ilk başlarda alışılması zor fakat alıştıktan sonrada kullanması çok kolay bir yapıdır. Kabaca şöyle çalışır, kontrollerimizin hepsi runat=”server” etiketli bir form un (<form runat=”server” ID=”form1″>kontrollerimiz burada</form>) içerisinde yer alır. Kontrollerimiz üzerinde de runat=”server” ifadesi geçmelidir. Sayfa üzerinde bir butona yada linke tıklandığında sayfa olduğu gibi post edilir framework tarafından işlenir ve geri döner. Bu işlemede PostBack diyoruz. Verilerde ViewState denilen bir meknızmayla taşınır. Bu sebepten dolayı klasik asp den yada diğer dinamik dillerden asp.net e geçmek sizi biraz zorlayabilir. Bu mekanızmanın avantajları ve dezavantajları bulunmaktadır. Bu konulara girmek istemiyorum çünkü konumuzdan epeyce uzaklaşmış oluruz. Bu ön bilgiden sonra ilk nesnemizden başlayalım. Okumaya devam et Asp.Net Kontrolleri Bölüm 1

Asp.Net ile fotoğrafları kaliteli boyutlandırma

Fotoğrafları direk boyutlandırdığımız zaman ciddi bir kalite kaybı meydana geliyor. CompositingQuality, InterpolationMode veya SmoothingMode değerleriyle oynasakda Photoshop’ un boyutlandırma kalitesine erişemiyoruz. Biraz araştırma yaptıktan sonra EncoderParameters ve ImageCodecInfo ile kalitenin ciddi bir şekilde arttırıldığını gördüm. Sonuç aşağıdaki görselde açık bir şekilde görülebiliyor. Özellikle üzerinde yazı bulunan görsellerde fark daha iyi farkediliyor. Aşağıda ki kodu kullanmak için fileupload nesnenizi methoda göndermeniz yeterli. Örneğin; fotograf.yukle(FileUpload1); Şunu da eklemek lazım, kaliteli ve kalitesiz fotoların aralarında neredeyse yarı yarıya boyut farkı bulunuyor.

Okumaya devam et Asp.Net ile fotoğrafları kaliteli boyutlandırma

Web işine nasıl başlamalıyım ?

Yaz geldi, okullar da bitti, bundan istifade etmek isteyen genç arkadaşlar, yeni maceralara yelken açmak istiyorlar. Ne rahatsız bir giriş cümlesi oldu bu ya, başlık da güzel olmadı zaten :S Son zamanlarda asp.net nasıl öğrenebilirim, css nasıl örğenebilirim, php nasıl öğrenebilirim gibisinden sayısız şey görüyorum. İnsanlar da cevap veriyor, o siteye bak bu siteye bak, şu kitabı al vs.. Esasında bu arkadaşların öğrenmeleri gereken şey bence dinamik bir web sayfasını oluşturan temellerin neler olduğu. Adam php öğrenmeye başlıyor sonra bakıyor ki javascript diye bir şey de varmış ya da bakıyor ki arkadaş tasarım için css, html vs.. şeyler de varmış, aklı gidiyor ve her şeyden bir anda soğuyor ki bu gayet normal. Halbuki yapıyı kabaca bilse kendine yakın gördüğü kısımdan başlayabilir ve en azından karşısına zart çıkan x bir şeyi gördüğünde şaşırmaz. Okumaya devam et Web işine nasıl başlamalıyım ?

jQuery Asp.Net Fotoğraf Kırpmak

Fotoğraf kırpmak (crop) işlemi dışarıdan karışık bir işmiş gibi görünsede esasında çok basit bir işlemdir. Hele ki jCrop diye güzel jquery eklentisi varken bu işlem hem kolay hemde eğlencelidir. Olayın mantığına bakacak olursak, jCrop bizim için resim üzerinde seçtiğimiz kısımın yükseklik, genişlik, x ve y değerlerini alıyor. Sornasın da bu bilgiler eşliğinde orjinal resim üzerinde kesme işlemini yapıyoruz. Eklentinin bir çok ayarı ve özelliği bulunuyor, bunlara buradan ulaşabilirsiniz. Az kaldı unutuyordum, projenize jquery.js ve jCrop u eklemeyi unutmayın :)

Okumaya devam et jQuery Asp.Net Fotoğraf Kırpmak

Asp.Net kontrollerine giriş

Bir yazı dizisine başlamak istiyorum, başlıktan da anlaşılacağı gibi dizimizin adı kontroller (controller). En sık kullanılan kontroller hakkında temel bilgilerileri örneklerle yazmaya çalışacağım. Asp.Net ile yeni tanışmış yada tanışacak insanlara güzel bir kaynak olacağını düşünüyorum. Şimdi hangi kontrollere bulaşacağız bunun bir listesini yazayım, ilerleyen günlerde de sıradan üçer beşer bu kontrollere detaylı bir şekilde göz atarız. Hatta grup grup yazayım.

  1. Label, literal, textbox, button, linkbutton, imagebutton
  2. Dropdownlist, checkbox, checkboxlist, radiobutton, radiobuttonlist
  3. Gridview, datalist, repeater

Asp.Net ile Twitter’ a gönderi yapmak

FriendFeed başlığıyla aynı olsun istedim :) son yılların en anlamsız aynı zamanda da en anlamlı girişimi hiç şüphesiz Twitter. Herkes adını duymuştur herkes üyedir ama kimse ne işe yaradığını bilmez, ne işe yaradığını bilenler fuzuli bir araç olduğunu söyler ama ne var ki herkesde aynı zamanda bu hizmeti kullanır. Burada durum Twitter nedir ne değildir diye uzun uzadıya birşey yazmayacağı, amacım belli asp.net ile Twitter’ a gönderi yapacağız, yani twitliyeceğiz :) FriendFeed örneğinde thread kullanmamıştık, bu örnekte thread kullanmakta fayda var diye düşünüyorum. Nedeni ise Twitter FriendFeed e göre çok daha etkin kullanılan bir hizmet olduğundan zaman zaman sunucuları bize geç cevap verebiliyor, bazen hiç cevap veremiyor Twitter’ ın deyimiyle over capacity oluyor. Bu arada thread nedir diye soracak olursanız buraya bakmanızı öneririm. Kaba tabirle ne olduğunu anlatmaya çalışayım. Methodumuzu aynen yazıyoruz, fakat methodu yeni bir thread ile çağıyorsunuz. Twitter örneğinde kullanıcı sayfanın işlemi yapmasını bekler, çünkü ilk önce bağlantı kurulup sonrasında bilginin karşıya gönderilmesi gerekmektedir, bu da karşı tarafın ve sizin trafiğinize göre değişkenlik gösterir. Kimi zaman 2 saniyede gerçekleşen iş kimi zaman 20 saniyede gerçekleşir. Thread ile bu işi arkaplanda yaptırıyoruz. Yani kullanıcıyı hiç bekletmiyoruz. Kullanıcı direk işlemin tamamlandığını görüyor, fakat arkatarafta thread işlemi koşturup sonuçlanmasını sağlıyor. Unutmadan projemize referans olarak Microsoft.Http.dll’ yi ekliyoruz. Twitter a gönderi yapmak için api anahtarına ihtiyaç duymuyoruz. Direk kullanıcı adımız ve şifremiz yeterli oluyor. Bu arada gönderiyi yapan kodu bir yerden bulmuştum fakat adresi hatırlamadığımdan kaynak gösteremiyorum. Yazan arkadaş hakkını helal etsin :) Okumaya devam et Asp.Net ile Twitter’ a gönderi yapmak

quickSearch ile tablo içinde arama

quickSearch tablo içinde ki veriler içerisinde arama yapmamıza olanak sağlayan bir jquery eklentisi. Eklentinin ana sayfasına buradan ulaşabilirsiniz. Eklenti gayet hızlı çalışıyor ve arama işinde de gayet başarılı.  Buradan içerisinde çok kayıt bulunan bir tabloda ki performansını görebilirsiniz. İnsan neden böyle bir eklentiye ihtiyaç duyar gibisinden bir soru gelebilir. Alınan raporlarda, ürün listelerinde vb.. yerlerde formu post edip, veritabanına istek göndermek bu tarz bir eklenti varken gereksiz olur, üstelik sayfa yeniden yüklenmeyeceğinden ayrıca bir performans kazanımı söz konusu oluyor. Şöyle de bir durum var 10bin 100bin kayıt olan yerlerde böyle bir çözüm söz konusu olamaz. Eklentinin çaışma mantığı gayet basit, nihayetinde biz veritabanından gelen veriyi tablomuza dolduruyoruz. Eklenti tablo içerisinde ki verilerden bizim kriterlerimize uygun olan olanları gösteriyor, diğerlerini ise gizliyor. Birde unutmadan eklenti sadece table içerisinde arama yapmıyor, liste elemanları içerisinde de arama yapabiliyor, bu bilgilere eklentinin sayfasından ulaşabilirsiniz. Örneğim de kullandığım tablo şablonunu  buradan aldım, illa bu tarz bir şablon kullanacaksınız diye bir şartta yok, istediğiniz tasarıma kolayca entegre edebilirsiniz. İlerleyen günlerde yine jquery eklentisiyle, tablo içerisinde arama, sıralama ve sayfalama işlemlerinin kolayca yapılmasına olanak tanıyan başka bir eklentiye bakacağız. Bu eklentiler sayesinde gridView den bir nebzede olsa uzaklaşmış olacağız, zaten bu tarz şeyler varken kim gridview kullanır ki ? Okumaya devam et quickSearch ile tablo içinde arama

jQuery ile FaceBook tarzı fotoğraf etiketleme

Facebook’ un fotoğrafları etiketleme (tag) lama mekanızmasını bilmeyen yoktur herhalde. Geçen gün lazım oldu ara tara bir türlü istediğim gibisini bulamadım. İsteğimize en yakın olan olan scripti gözüme kestirip facebook vari bir etiketleme mekanızması yapmaya çalıştım. (Scriptin (betik) orjinal halini bir türlü bulamadım, unutmazsam yarın eklerim.) Betiğe eklediğim özellikler; etiketleme sırasında arkadaşların listesi geliyor ve tıklayıp o kişiyi etiketleyebiliyorsunuz. Arkadaş listenizde arama yapabiliyorsunuz. Etiketleme işlemlerini veritbanına yazma ve okuma. Ufak tefek bir kaç ayar daha verdim. Betik kullanılacağı yere göre kolayca düzenlebilir. Bundan dolayı bir kullanıcı etiketlenmişse tekrar etiketlenemesin veya benzeri durumlar için hiç bir işlem yapmadım, heh unutmadan sql enjeksiyona önleminizi almadan direk kullanmayın. İsteyen istediği gibi düzenleyip kullanabilir, zaten görünce ne kadar basit bir şey olduğunu göreceksiniz.

jquery facebook style etiket tag Okumaya devam et jQuery ile FaceBook tarzı fotoğraf etiketleme

Asp.Net ile FriendFeed’ e gönderi yapmak.

Son günlerde o api senin bu api benim uğraşıp duruyor, kim mi ? Tabi ki Emre abi :) Twitter’ a göre çok bilindik olmasada FriendFeed’ de azımsanmıyacak bir kullanıcı kitlesine sahip. Basit bir şekilde FF hesabınıza nasıl gönderi yapabileceğimizi göreceğiz. İlk önce api keyinizi  https://friendfeed.com/account/api adresinden öğrenip, projemize referans olarak Microsoft.Http.dll‘ yi ekliyoruz. Okumaya devam et Asp.Net ile FriendFeed’ e gönderi yapmak.

String i Hex e, Hex i String e dönüştürme.

Ne garip bir başlık oldu yav :) String to Hex, Hex to String yazacaktım sonra
dedim güzel Türkçe' mi kullanayım. Geçenlerde başımız bir session nesnesi
yüzünden okadar ağırdıki tarifi inanın mümkün değil. İlgili kodları şekilden
şekile soktuk, amuda bile kaldırdık ama bir türlü çözüm bulamadık. En sonunda
session daki veriyi bir anahtarla birlikte şifreleyip adres çubuğundan taşıyalım
dedik. Nitekimde başarılı olduk ama zaman zaman sıkıntılar olduğunu gözledik.
Arkadaş zaten canımızı çıkaran bir durumdu tam hallettik derken yine hata almak
ciddi şekilde canımızı sıktı. Sıkıntı şifrelenen verinin + ^ | gibi
karakterlerin adres çubuğundan taşınırken problem çıkarmasından ileri
geliyormuş. HtmlDecode ve benzeri aksiyonların işe yaramadığı bir durum.
Emre abi
nin imda da yetiştiği bu durumda, karşı tarafa şifrelenmiş veriyi Hex formatına
dönüştürüp adres çubuğundan taşıyıp, sonrasında Hex veriyi stringe dönüştürerek
başarılı bir şekilde taşımış olduk. Böylelikle ciddi bir tecrübe edinmiş olduk,
demekki karmaşık karakterli verileri işlemler sonunda Hex formatında taşımak
gayet sağlıklı oluyormuş. Bu durumda dönüşümler kullandığımız kodları sizlerle
paylaşmak istedim.

    public string ConvertStringToHex(string asciiString)
    {
        string hex = "";
        foreach (char c in asciiString)
        {
            int tmp = c;
            hex += String.Format("{0:x2}", (uint)System.Convert.ToUInt32(tmp.ToString()));
        }
        return hex;
    }

    public string ConvertHexToString(string HexValue)
    {
        string StrValue = "";
        while (HexValue.Length > 0)
        {
            StrValue += System.Convert.ToChar(System.Convert.ToUInt32(HexValue.Substring(0, 2), 16)).ToString();
            HexValue = HexValue.Substring(2, HexValue.Length - 2);
        }
        return StrValue;
    }