Kimi zaman bir Web Site (Application değil) kodlaması yaparken (Class LibrarySınıf Kütüphanesi değil) birden fazla .Net Framework dilini kullanmak durumda kalınabilir.
Örneğin; Projede dil değişikliğine gidilebilir. Vb.Net dilinden C# diline geçmek gibi. Bu durumda adım adım ilerlermek daha mantıklı olacaktır. Lakin Web Site ŞablonuTemplate ile uygulama geliştirirken tüm classsınıf lar App_Code klasöründe olmalı ve klasör içinde tek dil uzantılı class dosyaları bulunmalıdır.
Peki böyle bir sorunu nasıl çözebiliriz.
İlk önce; App_Code klasörü her bil dil için alt klasörlere ayırılır. Kaç farklı dil kullanılacaksa o kadar klasör olmalı.
Daha sonra ise; Derleyicicompiler ye gerekli bilgileri web.config dosyası ile belirtmek yeterli olacaktır.
<configuration> <system.web> <compilation debug="false" targetFramework="4.0"> <codeSubDirectories> <add directoryName="vb-codes"/> <add directoryName="cs-codes"/> </codeSubDirectories> </compilation> </system.web> </configuration>
Ctr + Shft + B
Sıkıntıdan gezinirken (bu genelde MS Windows başlatStart menüsünde olur); Microsoft Visual Studio 2010 SDK SP1 -> Tool altında Start Experimental Instance of Microsoft Visual Studio 2010 SP1 adında bir kısayol olduğunu farkettim.
Şu şekilde de çalıştırabilirsiniz:
Nedir bunun hikayesi diye azıcık araştırdım.
Amaç Visual Studio için bir nevi test ortamı oluşturmakmış. Örneğin bir Extension'ı denemek istiyorsunu ama çok önemli de bir proje üzerinde de çalışıyoruz ve Extension' dan doğacak bir probleminde Visual Studio'ya yansımasını istemiyoruz. Bu durumda deneyselExperimental olan verisyonu açıyoruz (devenv /RootSuffiz Exp), Extension'ı kuruyoruz ve test ediyoruz. Beğenmedik kaldırıyoruz.. Bu işlem standart olarak kullandığımız Visual Studio'yu (devenv) etkilemiyor. Başka bir deyişle Geliştirme ArayüzüIDE ile ilgli herşeyi (options, toolbox ,extension vb) soyutlanmış oluyor.
Not: Şu adresten Visual Studio 2010 SP1 SDK yüklemeniz gerekiyor.
Uzun zamandır Javascript ile yazışmıyordum. Son zamanlarda ise yediğimiz içtiğimiz ayrı gitmez oldu. Sık kıllandığım ipuçlarını paylaşıyorum.
İlk ipucu; Js dosyalarını referans ekleme. Snippet -> ref
Burada amaç, başka bir Js dosyasından (IntelliSense olarak) faydalanabilmek. Referans vermek istediğiniz Js dosyasını sürükleyip bırakmanız yeterli.
Diğer bir ipucu; Javascript fonksiyonları için kullanım bilgisi ekleme. Snippet -> summary, param, returns
function KartEkle(kartno,ay,yil) { ///<summary>Yeni Kredi Kartı Ekleme</summary> ///<param name="kartno" type="string">16 haneli kredi kart bilgisi</param> ///<param name="ay" type="int">2 haneli ay bilgisi -> son kullanma tarihi</param> ///<param name="yil" type="int">4 haneli yıl bilgisi -> son kullanma tarihi</param> ///<returns>Kart başarılı olarak sisteme eklenirse 0 hata olursa -1 döner</returns> var kredikart ....
Buradaki amaç, fonksiyonu kullanırken açıklayıcı bilgiler vermek. param içindeki name özelliği ile fonsiyon parametre adının aynı olması önemli. type bilgisinin gerçekliği tamamen mantıksal.
Bu yazının son ipucu ise; IntelliSense'den kopya çekme tekniği.
Şahsen bizzat ben kendim çoğu zaman Javascript (built-in) fonksiyon adlarını hatırlayamam.
-Bu gibi durumlar için bir adet dummy değişken oluşturulur. -Başlangıç değerini fonksiyon tip kümesine (örneğin string) uygun bir değer atanır. -Gerisini IntelliSense halleder.
Bugün daha önce yazmış olduğum Setup & ConnectionString yazısına ek yapacağız. Söz konusu ek; mdfDataFile ve ldfLogFile dosyalarını VeritabanıDatabase sunucusuna eklemekAttach.
İlk öğrenmemiz gereken bu işi yapan DDL kodları; (şu yazıda bunu nasıl yapabileceğiniz görebilirsiniz)
CREATE DATABASE [ornek] ON (FILENAME = N'E:\DataBases\ornek.mdf'), (FILENAME = N'E:\DataBases\ornek_log.ldf') FOR ATTACH
Daha sonra bu kodları kurulumsetup sırasında (OnAfterInstall) Ado.Net komutları ile çalıştırmakExecute etmek.
//DDL kodlarını oluşturalım StringBuilder sb = new StringBuilder(); sb.Append("CREATE DATABASE [Ornek] ON\r\n"); sb.AppendFormat("(FILENAME = N'{0}'),\r\n", thisAss.Location.Replace( thisAss.GetName().Name + ".exe", "ornek.mdf") ); sb.AppendFormat("(FILENAME = N'{0}')\r\n", thisAss.Location.Replace( thisAss.GetName().Name + ".exe", "ornek_log.ldf") ); sb.Append("FOR ATTACH\r\n"); //oluşan DDL kodlarını ADO.NET ile çalıştıralım using (SqlConnection con = new SqlConnection(value.Replace("ornek", "Master"))) { using (SqlCommand com = new SqlCommand( sb.ToString(), con)) { con.Open(); com.ExecuteNonQuery(); } }
Geçenlerde bir takım verileridata WebForm' unda görüntülememView ve filtrelememFilter|Search gerekti (zaman da dar bu arada).
Bakın ne yaptım;
<asp:QueryExtender ID="QueryExtender1" runat="server" TargetControlID="EntityDataSource1"> <asp:SearchExpression DataFields="ProductName" SearchType="StartsWith"> <asp:ControlParameter ControlID="productname" /> </asp:SearchExpression> </asp:QueryExtender>
protected void Button1_Click(object sender, EventArgs e) { QueryExtender1.DataBind(); }
Alternatif olarak; TextBox kontrolünün Autopostback özelliğini True olarak ayarlanırsa Button kontrolüne ihtiyaç kalmadan da filtrelemeyi tetiklemek mümkün olur.
Biraz açıklama: QueryExtender, Framework 4.0 bileşenidir. LINQ ifadeleri için geliştirilmiş Expressionlaraİfade sahiptir. Örneğimizde SearchExpression kullandık. Nasıl kullandık? DataFields özelliği ile filtre uygulanacak alanı belirledik.(Daha fazla alan virgül ile belirtilebilir) Bu özellik klasik Sql sorgusunda where ifadesinden sonra kullanılan fieldAlan tanımlaması gibi düşünebilir. SearchType özelliği ise like ifadesinin karşılığıdır. StartsWith 'parametre%', EndsWith '%parametre' ve Contains '%parametre%' gibi çalışır. Son olarak filtreleme için kullanılacak parametre kaynağını belirtmek. Bu bir kontrol olabileceği gibi session, cookie gidi kaynaklar da olabilir.
Projeyi indirmek için tıklayın.