.Net Denemeleri

No Cache

 Sayfanın CacheÖnBellek lenmesini engellemek için Head içine;

<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="-1" />
30 Ocak Pazar, 2011 | Html

ClassViewer

Geçenlerde herhangi bir uygulama geliştiriyordum ki aniden bir kontrol ihtiyacım oldu. Söyle ki;

Bir Classnesne oluşturdum.

public class Employee
{
    public int ID { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public decimal Salary { get; set; }
    public DateTime HireDate { get; set; }
}

Daha sonra kopyasınıinstance çıkarıp özelliklerine değer atadım. Buraya kadar herşey normal. Peki dedim şunu birde WebForm'unda zahmetsiz bir şekilde gösterebilsem ne süper olur.
Böyle durumda akla en yatkın DetailsView veri kontrolü kullanmaktır. Lakin kontrolün DataSource özelliğine herhangi bir nesneyi zart diye atayamazsınız. Eğer atarsanız şöyle bir hata alırsınız

Error

Hoş değil :(

Bu gibi durumlarda olmasa ne zaman kontrol geliştireceğiz ki :)
Peki ne yapmak lazım;
Mantık basit. Reflection ile nesne özelliklerini okumak, kontrolün ihtiyaç duyabileceği ekstra bilgileri Attributenitelik yardımı ile iletmek.
 

[Serializable]
public class Employee
{
    [FieldAttributes(IsVisible = false)]
    public int ID { get; set; }
    [FieldAttributes(FieldHead = "Ad")]
    public string FirstName { get; set; }
    [FieldAttributes(FieldHead = "Soyad")]
    public string LastName { get; set; }
    [FieldAttributes(FieldHead = "Maaş", Format = "N2")]
    public decimal Salary { get; set; }
    [FieldAttributes(FieldHead = "İşe Başlama Tarihi", Format = "dd.MM.yyyy")]
    public DateTime HireDate { get; set; }
}

Kullanımın kolay olması için SmartTag ve DesignTimeSupport gibi atraksiyonlar.

Design

Sonuç;

Runtime

Proje dosyası.

26 Eylül Pazar, 2010 | Asp.net C# Css Html

Textarea MaxLength Sorunu

Asp.Net sunucuserver kontrollerinden TextBox kontrolünü TextMode="Multiline" ayarlanarak kullanıldığında MaxLength özelliğiproperty çalışmamaktadır. Buraya çözüm için alternatif yöntemler yazacağım zaman zaman.

İlk çözüm yine sunucu kontrollerinden CustomValidator ile olacak.

<asp:TextBox ID="mesaj" runat="server" TextMode="MultiLine" Rows="6" Columns="40" />
<asp:CustomValidator ID="cvM" runat="server" 
                        ErrorMessage="En fazla 400 karakter."
                        ForeColor="Maroon" 
                        ClientValidationFunction="Max400"
                        ControlToValidate="mesaj"
                        ValidationGroup="g1"
                        />
<script type="text/javascript">
    function Max400(source, arguments) {
        if (arguments.Value.length <= 40)
            arguments.IsValid = true;
        else
            arguments.IsValid = false;
    }
</script>

devam edecek...

24 Kasım Salı, 2009 | Javascript Asp.net Html

Panel'den Fieldset Yapmak

Asp.net sunucu kontrollerinden Panel'in GroupingText özelliğini kullanarak html çıktısı olarak Fieldset etiketi (etkisi) elde edilebilir.

<asp:Panel ID="pnlLogin" runat="server"
            BorderStyle="None"
            GroupingText="Login"
            Height="123px"
            Width="280px">
    <asp:Label ID="lblUsername" runat="server" Text="Username" />
    <asp:TextBox ID="txtUsername" runat="server" />
    <br />
<asp:Button ID="btnSubmit" runat="server" Text="Enter" />
5 Eylül Cumartesi, 2009 | Asp.net Html

CHM (Microsoft Compiled HTML Help) Nasıl Hazırlanır?

Html' e aşina iseniz ki ben çok aşinayımdır :) Help Workshop uygulaması ile kendi dokümantasyonunuzu oluşturmanız çok kolay olacaktır.
Mantık olarak yapılan iş;
Html uzantılı (bir birine bağlanmış) dosyaları (js,css ve resim de kullanabilirsiniz) derleyip .chm uzantılı yardım & bilgi dokumanları haline dönüştürmek. Basit bir web uygulaması yapmak gibi de düşünebilirsiniz. Şu ana kadar çok faydasını gördüm. Bilmeyenler de öğrensin diye basit bir görsel hazırladım. Umarım işinizi görür.

Html Help (chm)
İndir
27 Mayıs Çarşamba, 2009 | Genel Html

ListView (Web) ile Gruplamak

Çok yakın ve kadim bir dostum için araştırırken farkettim ve paylaşmak istedim.
ListView kontrolü içinde ki verileri gruplayarak göstermek. DataList kontrolündeki RepeatColums özelliğini kullanmak gibi fakat birazcık farklı :)

Div etiketleriyle Listview'e şablon hazırlamak yeterli.

<asp:ListView ID="Listview1" runat="server" GroupltemCount="S" EnableViewState="false">
    <ItemTemplate>
        <div style="width: 200px;
                    float: left; 
                    font-family: Verdana;
                    font-size: l0px; 
                    margin-bottom: l0px;">
            <asp:Image ID="Imagel" 
                        runat="server" 
                        ImageUrl='<%# "image.aspx?path=" + Eval("FullName") %>' />
            <br />
            <strong>Dosya Adi:</strong>
            <%# Eval("Name")%>
            <br />
            <strong>Uzunluk: </strong>
            <%# Eval("Length")%>
            <br />
            <strong>Özellikler : </strong>
            <%# Eval("Attributes")%>
        </div>
    </ItemTemplate>
    <LayoutTemplate>
        <div id="groupPlaceholderContainer" runat="server">
            <div id="groupPlaceholder" runat="server">
            </div>
        </div>
    </LayoutTemplate>
    <GroupTemplate>
        <div id="itemplaceholdertontainer" runat="server" style="width: l000px;">
            <div id="itemPlaceholder" runat="server">
            </div>
        </div>
    </GroupTemplate>
</asp:ListView>

Veri kaynağı için basit ve hızlı bir çözüm, dosyalar.

Listview1.DataSource = from file in new DirectoryInfo("C:\\windows").GetFiles()
                        orderby file.Name
                        select new
                        {
                            file.Name,
                            file.Length,
                            file.FullName,
                            file.Attributes
                        };
Listview1.DataBind();

Dosyaları biraz süslü gösterelim.

string path = Request["path"];
Icon ico = Icon.ExtractAssociatedIcon(path);
Bitmap bmp = new Bitmap(ico.Width, ico.Height);
Graphics g = Graphics.FromImage(bmp);
g.DrawIcon(ico, new Rectangle(0, 0, ico.Width, ico.Height));
bmp.Save(Response.OutputStream, ImageFormat.Png);
g.Dispose();
bmp.Dispose();
ico.Dispose();

Sonuç;

ListView 

14 Nisan Salı, 2009 | Asp.net C# Linq Html

JavaScript ile Split ve Join

Geçenlerde 70-528 kitabını karıştırıken aklıma geldi, yazayım dedim.

Javascript fonksiyonları;

function toCharArray(text, splitter) {
    return text.split(splitter);
}

function newString(charArray) {
    var text = '';
    for (var i = 0; i < charArray.length; i++)
        text += charArray[i];
    return text;
}

function splitlT() {
    var text = document.getElementByld('text').value;
    var array = toCharArray(text, '');
    var span = document.getElementByld('sp');
    span.innerHTML = array;
}

function joinlT() {
    var text = document.getElementByld('sp').innerHTML;
    var array = toCharArray(text, '');
    document.getElementByld('sp').innerHTML = newString(array);
}

Html test kodları;

<div>
    text :
    <input type="text" id="text" value="outlook" />
    <br />
    <input type="button" value="Char" onclick="splitIT()" />
    <input type="button" value="String" onclick="joinIT()" />
    <br />
    <span id="sp"></span>
</div>
26 Ocak Pazartesi, 2009 | Javascript Html

JavaScript ile ContentPlaceHolder İçindeki Sunucu Kontrollerine Ulaşmak

Web uygulamaları geliştirirken MasterPage kontrolü kullanıldığında içerik sayfalarında kullanılan sunucu kontrolleri istemci tarafında farklı isimlendirilir.
Örneğin, Name özelliği txtAd olan TextBox kontrolünün istemci tarafında aldığı id değeri ctl00_ContentPlaceHolder1_txtAD olacaktır. Bu durumda istemci tarafındaki javascript fonksiyonundan kontrollere erişim çok pratik olmayacaktır.

Şimdi bu durum karşısında nasıl bir tavır takınacağımıza bakalım :)

Örneğimizde, içerik sayfasında bulunan 4 adet TextBox kontrolünün Text özelliğini temizleyen bir javascript fonksiyonumuz olacak.

JavaScript

Html

Nasıl ki MasterPage kontrolü, karışıklığı engellemek için kontrollerin id özelliklerine öneki contentplaceholder ekliyorsa, bizde temizlemek istediğimiz kontrolleri, id özelliği region1 olan bir div içinde kullandık.
Daha sonra div içindeki tüm input kontrollerini aldık ve özelliği text olanları temizledik.

14 Ekim Salı, 2008 | Javascript Asp.net Html