I-MaSS Hakkında

27 Nisan 2009

Idea Software’in Hazırladığı I-Mass Bakım Otomasyon Yazılımının İlk Tanıtımı Hazırlandı. Çalışmada emeği geçen bütün arkadaşlara çok teşekkürler. Tanıtımı Buradan İndirebilirsiniz.


Idea Software ve I-MasS

25 Şubat 2009

Uzun zamandan beri çalışma yoğunluğu nedeniyle blog ile bir türlü ilgilenme imkanım olmadı. Hep bakıyorum ama bir konuda açıklayıcı makaleler yazmak için zamana ihtiyaç oluyor. Okuyan herkes anlasın. Başkalarından alınmasın. Öz ve kendi makalen olsun istiyorsun haliyle. Bu aşırı yoğunluğun nedeni ise Idea Software.

Yeni bir oluşum içinde daha iyi işler yapabilmek, bilgimizi hizmete dönüştürmek isteğindeydik ve Idea Software oluştu. İlk ürünümüz olarak I-MasS (Bakım Otomasyon Yazılımı) doğdu. Yani blogum ile ilgilenememe sebebim. I-MasS ile ilgili sunu buradadır. Yardımları için herkese teşekkürler.


Yaklaşık Bir Yıl Olmuş.

6 Mayıs 2008

Erişim problemleri, benim ilgilenememem yaklaşık bir yıl olmuş yazmayalı. Yazılacakların notları hazır. En kısa zamanda tekrar yazmalıyım diye düşünüyorum.


Yüklü Yazıcıları Listelemek.

8 Haziran 2007

Programımızı İlk Önce System.Drawing.Printing uzay ismini projemize ekleriz.

Ardından formumuza bir DropDownList kontrol ekleyerek projemizin Load Event’ına aşağıdaki kodu yazmalıyız.

private void Form1_Load (object sender, System.EventArgs e)
{
     foreach (String printer in PrinterSettings.InstalledPrinters)
     {
          printersList.Items.Add (printer.ToString());
     }
}

Programımızı çalıştırdığımız zaman bilgisayardaki yüklü yazıcılar DropDownList kontol içine gelmiş olacaktır.


ASP.NET Ajax UpdateProgress

30 Mayıs 2007

UpdateProgress ASP.NET Ajax ile hazırladığımız projelerimizde kullanıcı yaptığı işlem sırasında bizim istediğimiz bir mesajın sayfa üzerinde görünmesini sağlamaktadır. UpdateProgress bir nevi progressbar işlemi görmektedir.

Şimdi bu işlemi nasıl yapacağımız görelim.

İlk önce Visual Studio ile bir ASP.NET AJAX-Enabled Web Site oluşturuyoruz ve default.aspx sayfamızı aşağıdaki gibi dizayn ediyoruz.

progressbar.jpg

Butonumuzun Click olayına aşağıdaki kodu yazıyoruz.

protected void Button1_Click1(object sender, EventArgs e)
{
     System.Threading.
Thread.Sleep(1000);
     Label1.Text =
“Deneme”;
}

Sayfamızın source kısmında UpdatePanel’in aşağıdaki gibi düzenleyelim.

<asp:UpdatePanel ID=”UpdatePanel1″ runat=”server”>
<ContentTemplate>
<asp:Label ID=”Label1″ runat=”server”></asp:Label>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID=”Button1″ EventName=”Click” />
</Triggers>
</asp:UpdatePanel>

Şimdide UpdateProgress’in içini aşağıdaki gibi düzenleyelim.

<asp:UpdateProgress ID=”UpdateProgress1″ runat=”server”>
<ProgressTemplate>

Bu bölüm kullanıcının PostBack işlemi sırasında sayfa üzerinde gösterilecek kısımdır.

</ProgressTemplate>
</asp:UpdateProgress>

Yukarıda görüldüğü gibi <ProgressTemplate></ProgressTemplate> tagları arasına istediğimiz metni veya ASP.NET kontrolünü ekleyip bu kontrollere eventlar atayabiliriz.

<ProgressTemplate>
<img src=”yukleniyor.gif” />Yükleniyor. <br />
<input id=”btniptal” runat=”server” type=”button” value=”Iptal” />
</ProgressTemplate>

Sayfamızı çalıştırdığımız ve butona tıkladığımız zaman ProgressTemplate kısmında yazdığımız kodların işlem sırasında kullanıcıya gösterildiğini göreceğiz. İsterseniz Thread kullanarak mesajın daha uzun süre kullanıcıya gösterilmesini sağlayabilirsiniz.


ASP.NET AJAX UpdatePanel Kullanımı

27 Nisan 2007

ASP.NET Ajax UpdatePanel hazırladığımız web sayfalarında bölümler oluşturup bu bölümlerin asenkron bir şekilde güncellenebilmesini sağlamaktadır. UpdatePanel içerisindeki olaylar PostBack işlemi olmadan çalışıp, güncellenebilirler. Böylece sayfaların daha hızlı çalışması ve sunucu – istemci arasındaki veri trafiğinin azaltılması sağlanır.

  UpdatePanel’i web sayfamızda kullanabilmemiz için Microsoft ASP.NET AJAX’ın kurulu olması gerekmektedir.

  UpdatePanel kontrolü iki kısımdan oluşmaktadır.

<ContentTemplate></ContentTemplate>
<Triggers></Triggers>

ContentTemplate : UpdatePanel içinde bulunan kontrollerin tanımlandığı kısımdır.
Triggers : UpdatePanel’in hangi kontroller tarafından nasıl tetikleneceğinin tanımlandığı kısımdır. Tetikleyici kısmında iki durum kontrol edilir. Tetikleyici kontrolün UpdatePanel içinde olması yada olmaması.

UpdatePanel tanımlaması kısımları ile aşağıdaki gibidir :

<asp:UpdatePanel ID=”UpdatePanel1″ runat=”server”> 
      <ContentTemplate>
         <!– Ýçerik –>
     </ContentTemplate>
     <Triggers>
         <!– Tetikleyici Bilgileri –>
     </Triggers>
</asp:UpdatePanel>

Şimdi UpdatePanel’i nasıl kullanacağımızı görelim :

İlk önce File -> New -> Web Site menüsünden ASP.NET AJAX Enabled Web Site seçeneğiniz seçerek yeni bir web projesi yaratalım.

updatepanel1

ASP.NET Ajax uygulamalarının çalışabilmesi için ScriptManager kontrolünün sayfamıza eklenmiş olması gerekmektedir. Bunun Default.aspx sayfamıza ScriptManager kontrolünü ekleriz.

updatepanel2
updatepanel2

Şimdi UpdatePanel kontrolünü sayfamıza ekleyebiliriz.
 
updatepanel4
updatepanel4

Source kısmından UpdatePanel içeriğimizi aşağıdaki gibi değiştirelim.

<asp:UpdatePanel ID=”UpdatePanel1″ runat=”server”> 
    <ContentTemplate>
        <asp:Label ID=”Label1″ runat=”server” Text=”"></asp:Label><br />
        <asp:Button ID=”Button1″ runat=”server” Text=”Button” />
    </ContentTemplate>
</asp:UpdatePanel>

Sayfamızı Page_Load kısmana ise aşağıdaki kodu ekleyelim.
Label1.Text = DateTime.Now.ToLongTimeString();

Sayfamızı çalıştırdıktan ve butona tıkladıktan sonra göreceğiz ki label1 kontrolünde saat PostBack işlemi olmadan asenkron bir şekilde güncellenmektedir.

Eğer tetikleyici olarak kullanacağımız kontrol UpdatePanel içerisinde ise güncelleme işlemi hiçbir tetikleyici bilgisi girmeden çalışmaktadır bunu neden UpdatePanel’de bulunan ChildrensAsTrigger özelliğinin True olmasıdır. Biz bu değeri False yaparsak UpdatePanel içinde bulunan kontroller paneli güncellemeyecektir.

Peki eğer tetikleyici kontrol panelin dışında ise ?

Bu seferde UpdatePanel’de bulunan <Triggers></Triggers> kısmına aşağıdaki kodu eklememiz yeterli olacaktır.

<Triggers> 
    <asp:AsyncPostBackTrigger ControlID=”btnDisari” EventName=”Click” />
</Triggers>

Bu işlemi görsel olarak yapabilmek için UpdatePanel’in özelliklerinden Triggers seçeneği seçilir.

updatepanel4

Açılan pencerede AsyncPostBackTrigger Panelin PostBack işlemine girmeden güncelleneceğini gösterir. Eğer bu panelin PostBack işlemine girerek güncellenmesini istersek PostBackTrigger seçeneği seçilir. ControlID Tetikleyici kontrol Event Name ise tetikleyici kontrolün hangi durumda UpdatePanel’i güncelleyeceğidir.

updatepanel4


Yeliz KORKMAZ’ın Günlüğünden

25 Nisan 2007

Kurallar ve standartlar olmalıdır ama yaşamdaki en önemli parametre insandır. İnsanın düşünceleri ve duygusal yanı yaşamdaki etkinliğini kaldıramaz. Kaldırır ise robottan farkımız kalmaz. — Cezalandırıcı filminden.


WideDB ile Database İşlemleri…

4 Nisan 2007

WideDb csharp kodlarınızda database işlemleri daha rahat ve düzenli yapmanızı sağlayan bir araçtır. Bu aracı ve açık kaynak kodlarını http://sourceforge.net/projects/widedb adresinden temin edebilirsiniz. WideDb aracı ile database türü ayırt etmeksizin DML işlemlerini kolayca ve rahat bir şekilde gerçekleştirebilirsiniz. Örnek olarak bir isim, soyad ve telefondan oluşan bir databasede DML işlemlerini inceleyelim.
Database’imiz aşağıdaki gibi olsun:
Tablo ismi : KAYIT
idKAYIT – Auto – Public
Adi – Nvarchar
Soyadi – Nvarchar
Tel – Nvarchar

İlk once hazırladığımız Winforms veya ASP.NET projesinde database bağlatımızı widedb için oluşturmamız gerekmektedir.
Connection stringimiz aşağıdaki gibi olsun :
“Provider=SQLOLEDB;Data Source=.;Initial Catalog=CRM;User ID=sa;Password=;”
Widedb kullanırken tek dikkat etmemiz gereken kısım connection stringimizde Provider belirtmemizdir.
Şimdi database’imize kayıt işlemine bakalım.
Namespace kısmımıza using Wakiza.WideDB uzay ismini eklememiz gerekiyor.
Database bağlantımızı widedb ile oluşturuyoruz.
Wakiza.WideDB.dbConfig.instance.setConnectionString(connectionstring);
Ardindan DML işlemi için tablomuzu widedb ile bağlayalım.
dbObject kisidb = dbFactory.create(”KAYIT”, “idKAYIT”);
Daha sonra bilgi girmek istediğimiz kolonları ve alacakları değerleri yazıyoruz.
kisidb.setter(”Adi”, txtadi.Text);
kisidb.setter(”Soyadi”, txtsoyadi.Text);
kisidb.setter(”Tel”, txttelno.Text);

Bilgilerimize set ettikten sonra kayıt işlemini yapabilmesi için aşağıdaki komut ile INSERT işlemimizi tamamlıyoruz.
kisidb.save();
Şimdi de eklediğimiz kayıtları nasıl silebileceğimize bakalım.
Tekrar Db’yi ayarlıyoruz.
dbObject kisidb = dbFactory.create(”KAYIT”, “idKAYIT”);
Ardından silmek istediğimiz kayıta WideDB’yi set ediyoruz.
kisidb.setter(”idKAYIT”,1);
Son olarak aşağıdaki komut ile DELETE işlemimizi tamamlıyoruz.
kisidb.delete();
Şimdi de eklediğimiz kayıtlar üzerinde UPDATE işleminin nasıl yapıldığına bakalım.
UPDATE işlemini gerçekleştireceğimiz tablo için widedb ile object oluşturuyoruz.
dbObject kisidb = dbFactory.create(”KAYIT”, “idKAYIT”);
Ardından UPDATE işlemini yapmak istediğimiz kaydı set ediyoruz.
kisidb.setter(”idKAYIT”,1);
Set ettiğimiz kayıt bilgilerini getirebilmek için aşağıdaki komutu kullanmamız yeterli olacaktır.
kisidb.load();
Kaydımızı load ettiğimize göre şimdi de yeni değerleri atayalım.
kisidb.setter(”Adi”, txtadi.Text);
kisidb.setter(”Soyadi”, txtsoyadi.Text);
kisidb.setter(”Tel”, txttelno.Text);

Son olarak UPDATE işlemini tamamlamak için verileri kayıt ediyoruz.
kisidb.save();
Widedb aynı anda birden fazla tablo için kayıt işlemlerinde çok rahat ve çok kolay kullanımı ile gerçekten çok yararlı bir araçtır. Geliştirilebilir açık kaynak kodu ile de programcıların kendi isteklerine göre uyarlanabilmektedir.