28 Mayıs 2013 Salı

C# - MobilDev üzerinden SMS Gönderimi

merhaba.bu yazımda sizlere mobildev firmasının sağladığı SMS API üzerinden nasıl sms gönderebileceğimizi inceleyeceğiz.bu işlem için WebRequest sınıfından faydalanabileceğiz.






WebRequest request = WebRequest.Create("http://gateway.mobilus.net/com.mobilus");
request.Method = "POST";

string postData = "kullaniciadiniz-bayikodunuzşifreniz0mesaj icerigi05543332211";

byte[] byteArray = Encoding.UTF8.GetBytes(postData);
request.ContentType = "application/x-www-form-urlencoded";

request.ContentLength = byteArray.Length;

Stream dataStream = request.GetRequestStream();

dataStream.Write(byteArray, 0, byteArray.Length);

dataStream.Close();

WebResponse response = request.GetResponse();

MessageBox.Show(((HttpWebResponse)response).StatusDescription);

dataStream = response.GetResponseStream();

StreamReader reader = new StreamReader(dataStream);

string responseFromServer = reader.ReadToEnd();

MessageBox.Show(responseFromServer);

reader.Close();
dataStream.Close();
response.Close();

yukarıdaki kod parçasının ilgili yerlerini doldurduğunuz zaman mobildev üzerinden sms gönderimi yapabilirsiniz.

9 Mayıs 2013 Perşembe

GridControl Kolonlara Özet Bilgi (Summary) Ekleme

gridcontrol üzerinde genellikle parasal veya sayısal kolonlarda; toplam,ortalama vb. özellikleri görebileceğimiz ve gridcontrol nesnemizin footer bölümünde bulunan alanlara summary yani özet bilgi diyoruz.


Not :GridControl üzerinde özet bilgi görüntüleyebilmek için Gridcontrol Footer görünür olmak zorundadır.Run Designer sekmesinden Footer'ı aktif edebilirsiniz.


Aşağıdaki kodlar yardımıyla gridcontrol üzerine özet bilgi ekleyebilmeniz mümkün;

gridView1.Columns["toplam"].Summary.Add(DevExpress.Data.SummaryItemType.Sum, "toplam", "Toplam : {0:C2}");

yukarıdaki kod gridcontrol üzerindeki "toplam" kolonuna "Toplam : xxx miktar" şeklinde özet bilgi ekler.

SummaryItemType özelliği özet bilginizin tipini belirtir;

Sum : ilgili kolonun bilgilerinin toplamını verir.parasal toplamlar gibi.
Max : Kolondaki en yüksek değeri verir.
Min : Kolondaki en düşük değeri verir.
Count : Kayıt Sayısını verir.
Average : Ortalama verir.
None : Özet bilgi işlemini pasif yapar.








Devexpress XtraPrinting - DevExpress Yatay Raporlama

Merhaba;

bazen çalıştığınız uygulamada çıktı almanız gerekebilir.az bilgi bulunan veya tasarımı normal sayfalara göre yapılmış raporlarda bir sıkıntı yaşanmasada; genellikle bir datatable,dataset veya gridcontrol gibi dinamik veri nesnelerinde çok sayıda bilgi bulunabileceğinden raporlamada sıkıntılar çıkabiliyor.satır veya sütunlar sayfaya sığmayabiliyor.bunun çözümü de yazdırma işleminin kağıt üzerinde yatay şekilde yapılmasından yani landscape reporting işleminden geçiyor.

devexpress bizlere bunun için 2 adet nesne sunuyor.

bunlardan biri PrintingSystem : adındanda anlaşılacağı gibi bu nesne yazdırma işlemi ile ilgili olayları ve döküman ile ilgili işlemleri kapsıyor.

PrintableComponentLink : kağıt seçimi,belge adı,export işlemleri gibi aktiviteleri bu nesne sayesinde yapabiliyoruz.

aşağıdaki kod bloğu gridcontrol üzerindeki verinin pdf formatında yatay olarak çıktısını verir.

  PrintingSystem ps = new PrintingSystem();
PrintableComponentLink link = new PrintableComponentLink(ps);
link.Component = gridControl1;
link.Landscape = true;
link.CreateDocument();
link.PrintingSystemBase.ExportToPdf("C:\dokuman.pdf");

Devexpress - 3 Adımda Uygulama Bazlı Dinamik LookandFeel Değişikliği

devexpress ile yaptığımız projelerde bazen çalışma zamanında(runtime) temanın değiştirilebilmesini isteyebiliriz.son kullanıcı istediği zaman combobox'ta listelediğimiz temaları programa uygulayabilir ve birdahaki değişikliğe kadar aynı temalayı kullanabilir.aşağıda göreceğimiz örnek ile bunu nasıl yapabileceğimizi göreceğiz;

öncelikle projemize bir adet settings dosyası ekliyoruz.kullanıcının seçtiği temanın adını buraya kaydedeceğiz.bu sayede 2. bir değişikliğe kadar proje en son seçilen tema ile kullanılacak.


bir form oluşturuyor ve bu forma;

1 adet combobox,
1 adet button
1 adet defaultBarAndDockingController ekliyoruz.

Not : defaultBarAndDockingController kontrolü seçili lookandfeel özelliğinin uygulama bazlı olmasını sağlar.bunun için formunuzun lookandfeel özelliğini skin olarak ayarlamanız gerekmektedir.

Not : Listelenen bazı LookandFeel skin'leri BonusSkin olarak geçer ve bunları kullanabilmek için  projenize ilgili versiyonun BonusSkins.dll dosyasını eklemeniz gerekir.Bu İşlemi program.cs dosyasına ;
DevExpress.UserSkins.BonusSkins.Register();
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
kodlarını ekleyerek yapabilirsiniz.

1- form load olayında combobox değişkenimize tema adlarını dolduruyoruz.
private void lookandfeel_Load(object sender, EventArgs e)
{
this.comboBoxEdit1.Properties.Items.AddRange(new object[] {
"Metropolis",
"Money Twins",
"DevExpress Style",
"DevExpress Dark Style",
"VS2010",
"Seven Classic",
"Office 2010 Blue",
"Office 2010 Black",
"Office 2010 Silver",
"Office 2013",
"Coffee",
"Liquid Sky",
"London Liquid Sky",
"Glass Oceans",
"Stardust",
"Xmas 2008 Blue",
"Valentine",
"McSkin",
"Summer 2008",
"Pumpkin",
"Dark Side",
"Springtime",
"Foggy",
"High Contrast",
"Seven",
"Sharp",
"Sharp Plus",
"The Asphalt World",
"Whiteprint",
"Caramel",
"Lilian",
"iMaginary",
"Black",
"Office 2007 Blue",
"Office 2007 Black",
"Office 2007 Silver",
"Office 2007 Pink",
"Blue",
"Darkroom",
"Blueprint",
"Metropolis Dark"});
}


2 - Button nesnemizin click olayına aşağıdaki kodları yazıyoruz.
//seçtiğimiz tema adını settings dosyasına taşıyoruz
Properties.Settings.Default.lookandfeel = comboBoxEdit1.SelectedText;
//settings dosyasındaki değişikliği kaydediyoruz
Properties.Settings.Default.Save();
// değiştirdiğimiz temanın projemizdeki tüm formlarda aktif olmasını sağlıyoruz.
defaultBarAndDockingController1.Controller.LookAndFeel.Style = DevExpress.LookAndFeel.LookAndFeelStyle.Skin;
// uygulayacağımız temayı defaultBarAndDockingController nesnemize atıyoruz.
defaultBarAndDockingController1.Controller.LookAndFeel.SkinName = Properties.Settings.Default.lookandfeel.ToString();

3 - proje açılışında en son seçilen aktif temanın kullanımı;

program.cs dosyamız içerisinde yapacağımız tanımlama ile en son seçilen aktif temayı program açılırken formlara uyguluyoruz.
mainForm frm = new mainForm();
frm.defaultBarAndDockingController1.Controller.LookAndFeel.Style = DevExpress.LookAndFeel.LookAndFeelStyle.Skin;
frm.defaultBarAndDockingController1.Controller.LookAndFeel.SkinName = Properties.Settings.Default.lookandfeel;

Bu makalede 3 adımda LookandFeel Teknolojisinin profesyonel olarak nasıl kullanılabileceğini görmeye çalıştık hepinize iyi çalışmalar.





Nasıl Yapılır? 2 - GridControl Dışa Aktarma (Exporting)

merhaba;

bazen gridcontrol üzerindeki verilerimizi farklı formatlarda dışa aktarmaya(exporting) ihtiyaç duyabiliriz.devexpress bu konuda gridcontrol nesnesine oldukça güzel özellikler eklemiş.Başlıca Export seçenekleri ;

  • ExportToCsv()  -
  • ExportToExcelOld()
  • ExportToHtml()
  • ExportToHtmlOld()
  • ExportToMht()
  • ExportToPdf()
  • ExportToRtf()
  • ExportToText()
  • ExportToXls()
  • ExportToXlsx()

Her birinin kullanımı hemen hemen aynı olduğu için sadece birinin üzerinde güzel bir örnek vereceğim.yapacağımız uygulamada gridcontrol'ü dolduracak,contextmenu ekleyerek gride atayacak ve çalışma esnasında kullanıcı grid üzerinde sağ tuş ile açılacak olan menüden gridcontrol içeriğini pdf olarak istediği lokasyona kaydedebilecek.

formumuza

  • 1 adet gridcontrol
  • 1 adet ContextMenuStrip
  • 1 adet SaveFileDialog 

ekleyelim.

gridcontrol ü veritabanınıza bağlayıp verileri çektiğinizi varsayıyorum.bunun için diğer makalelerimde bilgi bulabilirsiniz.


ContextMenu içeriğine "PDF'e Aktar" isminde bir menü ekleyelim.

contextmenu bileşenini gridcontrol'e bağlamak için;
gridControl1.ContextMenuStrip = contextMenuStrip1;

ContextMenu bileşeninin oluşturduğumuz "PDF'e Aktar" seçeneğine çift tıklayalım ve kodlarımızı yazalım ;
private void pdfOlarakAktarToolStripMenuItem_Click(object sender, EventArgs e)
{
string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
saveFileDialog1.Filter = "(*.pdf)|*.pdf";
saveFileDialog1.FilterIndex = 0;
saveFileDialog1.Title = "PDF Olarak Aktar";
saveFileDialog1.InitialDirectory = path;
saveFileDialog1.ShowDialog();

gridView1.ExportToPdf(saveFileDialog1.FileName);
}

kısaca özetlemek gerekirse;
path ile savefiledialog açılışında masaüstünün görünmesini sağladık.
saveFileDialog1.Filter : savefiledialog penceresinde yanlızda pdf uzantılı dosyaları gösterdik.

saveFileDialog1.FilterIndex : birden fazla uzantı göstermek isteseniz aktif olarak hangisini kullanacağınızı burdan belirleyebilirsiniz.

saveFileDialog1.Title : Pencere Başlığını Ayarladık.

saveFileDialog1.InitialDirectory : ilgili konum ataması yaptık. yani Environment.GetFolderPath(Environment.SpecialFolder.Desktop) ile dönen masaüstü yolunu savefiledialog nesnesine atadık ki açılışta masaüstünü göstersin.

saveFileDialog1.ShowDialog() : pencereyi açtık.

gridView1.ExportToPdf(saveFileDialog1.FileName) : kullanıcının seçtiği lokasyona seçtiği isim le gridview'ın pdf formatında export işlemini gerçekleştirdik.

bu makalemizin de sonuna geldik.Sağlıcakla Kalın.








Nasıl Yapılır ? - DataTable İçerisinde Arama Yapmak ve Hücre Değerlerini Değiştirmek

merhaba;

bazen gridcontrol içerisindeki verilerde değişiklik yapmak isteyebiliriz.bu işlem için birden fazla yöntem bulunmakla birlikte bu makale bu işlemi en basit ve farklı bir yoldan nasıl yapabiliriz onu açıklamaya çalışacağım.


gridcontrol içerisindeki verileri değiştirmek için izlenebilecek yollardan bir tanesi T-SQL sorgusunu değiştirmektir.

örnek vermek gerekirse bir ürün tablomuz olsun.bu ürün tablomuzda ürünün geldiği şehir id si bulunsun.şehir tablosundada ilgili id nin şehir adı bulunsun.normalde t-sql sorgusu ile bunu joinlerle yapabiliriz fakat eğer çok fazla join işlemi bulunuyorsa bu sorguyu birden fazla alt sorgu haline getirmek ve dönen kayıtları tek datatable içerisinde toplamak gerekebilirken aşağıda anlatacağım yöntem ile bunu basitçe halledebiliriz.


ben kodlama işlemine; sizin verilerinizi çekip,datatable içerisine aktardığınızı varsayarak başlıyorum;

1-DataTable içerisinde arama
int sayac = 0;
foreach (DataRow dr in tablo.Rows)
{

string sehir = db.Valreturn("select ADI from il where ID='" + dr["sehir"].ToString() + "'");
db.tablo.Rows[sayac][db.tablo.Columns["sehir"]] = sehir;
sayac++;

}



yukarıdaki örnekte datatable içerisinde foreach döngüsü yardımıyla arama yaptık ve datatable içerisindeki her satır için id değerini aldığımız şehir bilgisini datatable'ın ilgili hücresine yazdık.yani önce
string sehir = db.Valreturn("select ADI from il where ID='" + dr["sehir"].ToString() + "'");
satırıyla datatable ın "sehir" kolonunda bulunan şehir id sini aldık ve şehir tablosundan ilgili id nin adı na ulaşıp bunu sehir değişkenine atadık.Daha Sonra;
db.tablo.Rows[sayac][db.tablo.Columns["sehir"]] = sehir;

satırıyla ilgili hücreyi değiştirerek id yerine şehir adının yazılmasını sağladık.
sayac++;
kodu ile de sayacı arttırarak bu işlemin tüm satırlar için yapılmasını sağladık.

isterseniz bu işlemi belirli değerler için de yapabilirsiniz örneğin ;


if (tablo.Rows[sayac][db.tablo.Columns["sehir"]] == "İzmir")
{
\\ kodlar buraya
}
şeklinde bir ifade kullanırsanız foreach içerisinde sehir bilgisi İzmir'e veya başka bir değere eşit olduğunda yapılacak işlemleri belirtebilirsiniz.


bu makalemin de sonuna gelmiş bulunuyorum.sağlıcakla kalın.