Klasör varmı Kontrolu ve yoksa yeni Klasör oluşlturma:
if (!Directory.Exists(Server.MapPath(@"~\images"))
{
Directory.CreateDirectory(Server.MapPath("../images"));
}
Dosya Kaydetme :
Form üzerindeki düzenlemeler : (enctype="multipart/form-data")
foreach (string file in Request.Files)
{
HttpPostedFileBase hpf = Request.Files[file] as HttpPostedFileBase;
if (hpf.ContentLength == 0)
{
product.Resim = form["Resim1"];
continue;
}
if (!Directory.Exists(klasor))
{
Directory.CreateDirectory(klasor);
}
product.Resim = product.CategoryID + "/" + hpf.FileName;
hpf.SaveAs(Server.MapPath("../images/" + product.CategoryID) + "/" + hpf.FileName);
}
5 Şubat 2014 Çarşamba
31 Ocak 2014 Cuma
C# MVC, Klasörde Bulunan Dosya adlarının DropDownList ile gösterimi
C#'ta klasör ve dosya işlemlerinde System.IO kütüphanesini kullanırız.
Örnek :
Dosya Adlarının Çekilmesi :
public List dosyalar(string path)
{
//DirectoryInfo tipinden bir değişken oluşturup,
//içindeki dosyaları okumak istediğimiz klasörün dizin bilgisini veriyoruz.
DirectoryInfo di = new DirectoryInfo(path);
//FileInfo tipinden bir değişken oluşturuyoruz.
//çünkü di.GetFiles methodu, bize FileInfo tipinden bir dizi dönüyor.
FileInfo[] rgFiles = di.GetFiles();
//Dosya İsimlerinin kayıt edilecegi List oluşturuyoruz
List dosya = new List();
//Foreach ile rgFiles içerisinde dönerek dosya adlarını listemize ekliyoruz
foreach (FileInfo fi in rgFiles)
{
//fi.Name bize dosyanın adını dönüyor.
//fi.FullName ise bize dosyasının dizin bilgisini döner.
dosya.Add(fi.Name);
}
//geriye liste olarak dosya isimlerinin bulunduğu string liste dönüyor
return dosya;
}
// Action içerisinden çağırma ve ViewBag ile ViewBag atama kodu:
List resim = dosyalar(Server.MapPath("~/images").ToString());
ViewBag.resimler = new SelectList(resim.AsEnumerable());
//View İçeriği :
@Html.DropDownList("Name",ViewBag.resimler as SelectList)
Örnek :
Dosya Adlarının Çekilmesi :
public List
{
//DirectoryInfo tipinden bir değişken oluşturup,
//içindeki dosyaları okumak istediğimiz klasörün dizin bilgisini veriyoruz.
DirectoryInfo di = new DirectoryInfo(path);
//FileInfo tipinden bir değişken oluşturuyoruz.
//çünkü di.GetFiles methodu, bize FileInfo tipinden bir dizi dönüyor.
FileInfo[] rgFiles = di.GetFiles();
//Dosya İsimlerinin kayıt edilecegi List oluşturuyoruz
List
//Foreach ile rgFiles içerisinde dönerek dosya adlarını listemize ekliyoruz
foreach (FileInfo fi in rgFiles)
{
//fi.Name bize dosyanın adını dönüyor.
//fi.FullName ise bize dosyasının dizin bilgisini döner.
dosya.Add(fi.Name);
}
//geriye liste olarak dosya isimlerinin bulunduğu string liste dönüyor
return dosya;
}
// Action içerisinden çağırma ve ViewBag ile ViewBag atama kodu:
List
ViewBag.resimler = new SelectList(resim.AsEnumerable());
//View İçeriği :
@Html.DropDownList("Name",ViewBag.resimler as SelectList)
29 Ocak 2014 Çarşamba
C# Linq – Aggregate Metodu
Aggregate Metodu
Enumerable sınıfına ait olan ve IEnumerable interfacesini implement eden tüm tiplere uygulanabilen Aggregate metodunu açıklamak istiyorum.
Aggregate metodu aslında bazı işlemleri çok kolay yapılmasını sağlasa da ilk etapda tam olarak nasıl çalıştığını anlamak kafa karıştırıcı olabiliyor. Bu metod, aldığı listenin elemanları üzerinde tek tek işlem yaparak, bir önceki işlem sonucunu bir sonraki elemanın işleme sokulduğu noktaya taşır.
Bunu bir örnek ile anlatmak gerekirse,
List<string> str = new List<string> {"fatih", "mehm", "d", "dd","asdasdad", "45g", "çoookuzunbistring", "dahakısastring" }; string enUzunString = str.Aggregate((x, y) => x.Length > y.Length ? x : y); Console.WriteLine(enUzunString); //Output : çoookuzunbistring |
Yukarıdaki örnek, Aggregate metodunu kullanarak, liste içindeki en uzun stringi bulan basit bir kod parçacığıdır.
Burda yapılan işlemi açıklamak gerekirse, Aggregate metodu, liste içinde ilk önce 1. elemanı yani “fatih” stringini ele alır. İlk eleman olduğundan “aggregated value” olarak bu ilk eleman atanır. Daha sonra metod ikinci elemana geçer. Aggregated Value da yapılan ikinci işlem için taşınır. Daha sonra “mehm” strinigini ele alır ve bunun uzunluğu ile taşınan aggregated value uzunluğu karşılaştırılarak sonuç bir sonraki eleman için aktarılır. Bu şekilde liste içindeki tüm elemanlar gezilir.
Sonuç olarak liste içindeki en uzun string bulunur ve enUzunString değişkenine atanır.
List<int> intList = new List<int> {456, 2, 56, 7, 5678, 12, 22, 3, 456789 }; int enBuyuk = intList.Aggregate((a, b) => a > b ? a : b); Console.WriteLine(enBuyuk); |
Yine aynı şekilde elemanlar liste içinde taşınan aggregated value ile tek tek karşılaştırılarak en büyük int bulunur.
Linq ile ilk 10 kaydın çekilmesi (Take)
.Take() Fonksiyonu bu amaçla kullanılmaktadır.
Örnek :
Örnek :
var q = from m in MyTable.Take(10)
select m.Foo
21 Ocak 2014 Salı
WPF STYLE
WPF’te Style’ların farklı farklı kullanım yöntemleri vardır:
1.) Resource Dictionary oluşturup tasarıya eklemek:
Tasarı (proje) üzerinde sağ tıklayın, Add, Resource Dictionary, Bir isim girin (ben başına rd koymayı tercih ediyorum). Oluşturduğumuz kaynak dosyayı her User Control ya da Window’da kullanabilmemiz için App.xaml doyasına geçip aşağıdaki gibi bir tanımlama yapıyoruz:
Source özelliğine tanımladığımız rdNesneler.xaml kaynak dosyası istediğimiz her Window ve User Control’de kullanabileceğimiz Style’ları tutacak. Bu xaml’ın içinde oluşturduğumuz her Style dosyasını (Elbette x:key değeri olmak zorunda) her yerde kullanabiliriz.
2.) Window ya da UserControl içerisinde oluşturup kullanmak:
Resource Dictionary gibi bu yöntem de her yerde kullanıma açıktır. RD’den farkı yalnızca oluşturulduğu sınıf içerisinde çağırılabilmesidir. Örneğin aşağıdaki gibi bir Button Sitilimiz olsun:
< Style x:Key=”dugmeSitili” TargetType=”Button”>
< Setter Property=”Background” Value=”WhiteSmoke” />
< Setter Property=”Padding” Value=”8,4″ />
< Setter Property=”Margin” Value=”4″ />
< Setter Property=”FontFamily” Value=”Trebuchet MS”/>
< /Style>
< /Window.Resources>
< Button Style=”{StaticResource dugmeSitili}” Content=”Mehmet ” Margin=”61,182,227,52″ />
< Button Style=”{StaticResource dugmeSitili}” Content=”Mehmet ” Margin=”71,96,239,135″ />
< /Grid>
Görüldüğü gibi Sitil özelliklerimiz Application.Resource yerine Window.Resource altında tanımlandı. Bu yüzden yalnızca bu Window altında çalışacaktır. Diğer önemli bir noktaysa her iki düğme için de aynı Sitil tanımlamasının yapılmış olmasıdır. Eğer istersek bu penceredeki tüm düğmeler için tek bir kere tanımlama yaparak da Sitil belirleyelebiliriz. Aşağıdaki XAML’ı inceleyelim:
Kodlardan da anlaşılabileceği gibi Window.Resources altında bir kere tanımlanan Sitil, düğmelerde tek tek belirtilmeden uygulanmıştır. Bunun nedeni TargetType özelliğine Button değerinin atanmış olmasıdır. Aynı durum tüm diğer nesneler için de söz konusudur.
30 Ekim 2013 Çarşamba
Toad Oracle’da Türkçe Karakter Sorunu ve Çözümü
Toad dan Oracle veritabanına bağlanıp dataları çektiğimde verilerdeki Türkçe karakterlirin yerine ''?'' işareti çıkması.
Çözümü şu şekilde;
Regeditten NLS_LANG değerini bulup değerini TURKISH_TURKEY.TR8MSWIN1254 olarak değiştirmek.( Aynı değer birden fazla olabilir. Eğer oracle'ı tek bi seferde kurmadıysanız ve kaldırma yapamadan yeniden üzerinde kurmak istediğimizde her yeni Oracle ürünü kurulumu ile farklı bir ORACLE_HOME altında değerler oluşturur.Toad bunlardan birini kullanıyordur.Bunun için doğru NLS_LANG değerini değiştirdiğinizden emin olun.)
Bunları yaptıktan sonra hala düzelmemiş ise son çare olarak Control Panel\Clock,Language, and Region (Denetim Masası\Saat, Dil ve Bölge) giderek Region and Language (Bölge ve Dil ) kısmına gelerek burdaki Formats,Location,Keybord (Biçim,Yer,Klavye ) vs.. bütün ayarları Turkish (Turkey) olarak ayarlamanız gerekebilir.
Çözümü şu şekilde;
Regeditten NLS_LANG değerini bulup değerini TURKISH_TURKEY.TR8MSWIN1254 olarak değiştirmek.( Aynı değer birden fazla olabilir. Eğer oracle'ı tek bi seferde kurmadıysanız ve kaldırma yapamadan yeniden üzerinde kurmak istediğimizde her yeni Oracle ürünü kurulumu ile farklı bir ORACLE_HOME altında değerler oluşturur.Toad bunlardan birini kullanıyordur.Bunun için doğru NLS_LANG değerini değiştirdiğinizden emin olun.)
Bunları yaptıktan sonra hala düzelmemiş ise son çare olarak Control Panel\Clock,Language, and Region (Denetim Masası\Saat, Dil ve Bölge) giderek Region and Language (Bölge ve Dil ) kısmına gelerek burdaki Formats,Location,Keybord (Biçim,Yer,Klavye ) vs.. bütün ayarları Turkish (Turkey) olarak ayarlamanız gerekebilir.
26 Eylül 2013 Perşembe
ROW_NUMBER Kulanımı Örnek, Bir fatura bazında, fatura detaylarına sıra numarası verilmesi
select (mod(emp_id,5)-emp_id)*-1 page, seq_no,tutar FROM (
SELECT seq_no, tutar, ROW_NUMBER()
OVER (PARTITION BY seq_no ORDER BY seq_no) AS emp_id
FROM ser_hiz_det
where seq_no in ('680501','81127')
)
ORDER BY seq_no
SELECT department_id, last_name, employee_id, ROW_NUMBER() OVER (PARTITION BY department_id ORDER BY employee_id) AS emp_id FROM employees; DEPARTMENT_ID LAST_NAME EMPLOYEE_ID EMP_ID ------------- ------------------------- ----------- ---------- 10 Whalen 200 1 20 Hartstein 201 1 20 Fay 202 2 30 Raphaely 114 1 30 Khoo 115 2 30 Baida 116 3 30 Tobias 117 4 30 Himuro 118 5 30 Colmenares 119 6 40 Mavris 203 1 . . . 100 Popp 113 6 110 Higgins 205 1 110 Gietz 206 2
Kaydol:
Kayıtlar (Atom)