Sayfalar

13 Haziran 2012 Çarşamba

Application.DoEvents();

Bir windows uygulamasında, form içerisinde kullandığınız uzun döngüler var ise projenizi debug modda çalıştırıldığınızda bir süre sonra, Visual Studio'da aşağıdaki hata mesajı ile karşılaşırsınız.

"The CLR has been unable to transition from COM context 0xa24bf0 to COM context 0xa24d60 for 60 seconds. The thread that owns the destination context/apartment is most likely either doing a non pumping wait or processing a very long running operation without pumping Windows messages. This situation generally has a negative performance impact and may even lead to the application becoming non responsive or memory usage accumulating continually over time. To avoid this problem, all single threaded apartment (STA) threads should use pumping wait primitives (such as CoWaitForMultipleHandles) and routinely pump messages during long running operations."

Ayrıca kodunuzun içerisinde nesne oluşturuyorsanız, bu nesneyi yok etmek için using, dispose ve garbage collector kullanıyor olmanıza rağmen, "Out of memory" hatası almaya devam edersiniz.

örn:
using (Bitmap FrontImage = new Bitmap(Properties.Resources.BlankCard))
{
         FrontImage.Dispose();
}
GC.Collect();

İşte bu durumda size yardımcı olabilecek komut,  Application.DoEvents(); 'dir.
Bir windows form çalıştırılığında, döngü içerisinde gerçekleştirilmek istenen olaylar bir kuyruğa alınır ve bu kuyrukta bekletilir. Olayların kuyrukta bekletiliyor olması,  uygulamanın cevap vermemesine ve  yukarıda bahsettiğim gibi hatalar ile karşılaşmanıza sebep olur. Bu hatalardan, kuyrukta bekleyen olayların işlenmesini sağlayan Application.DoEvents(); komutunu döngünüzün içerisinde kullanarak kurtulabilirsiniz.

5 Nisan 2012 Perşembe

AssociatedControlID

Web form üzerinde bir Label kontrolü ile başka bir sunucu kontrolü ilişkilendirmek için AssociatedControlID özelliği kullanılır. Bu özellik, bir Label kontrolü başka bir sunucu kontrolü ile ilişkili olduğunda, işlevselliğini arttırmak için kullanılır. Örneğin; bu özelliğin uygulandığı bir Label kontrolünün kullanıldığı bir web sayfası, tarayıcıda görüntülendiği sırada, Label kontrolü üzerine fare (mouse) ile tıkladığında, Label kontrolünün ilişkili olduğu diğer kontrole (TextBox vb.) imlecin fokuslanması sağlanır.

<asp:Label runat="server" ID="lblDesc" Text="Açıklama" AssociatedControlID="txtDesc" /> <asp:TextBox ID="txtDesc" runat="server"></asp:TextBox>

12 Mart 2012 Pazartesi

AjaxControlToolkit Kullanımı

Could not find any resources appropriate for the specified culture or the neutral culture.  Make sure "AjaxControlToolkit.Properties.Resources.NET4.resources" was correctly embedded or linked into assembly "AjaxControlToolkit" at compile time, or that all the satellite assemblies required are loadable and fully signed.

Hata mesajı ile karşılaşıyorsanız form etiketi başladıktan sonra sayfanıza ToolkitScriptManager  eklemeniz gerekiyor.


<body>
<form id="form1" runat="server">
<ajax:ToolkitScriptManager ID="sm1" runat="server"></ajax:ToolkitScriptManager>   
    :
    :
   </form>
</body>

1 Mart 2012 Perşembe

C#'da Luhn Algoritması ile Kredi Kartı Numarası Doğrulama

using System;
using System.Linq;

//Credit Card Check Digit - Luhn Algorithm
namespace LuhnAlgorithm
{
    class Program
    {
        static void Main(string[] args)
        {
           string ccNo = "4022999999994026";
           bool sonuc = IsLuhnValid(ccNo);//Parametre olarak k.k numarası geçilir.
        }

        public static bool IsLuhnValid(string value)
        {
            return value.Where(c => Char.IsDigit(c)).Reverse()
              .SelectMany((c, i) => ((c - '0') << (i & 1)).ToString())
              .Sum(c => c - '0') % 10 == 0;
        }
    }
}

29 Şubat 2012 Çarşamba

Generic Listelerde Sıralama (Generic List Sort)

class Books
{
     public string BookName;
     public string Author;
}

class Program
{
     static void Main()
     {
           Books[] bookList = new Books[5];
           bookList[0].BookName="Suç ve Ceza";
           bookList[0].Author="Fyodor Mihayloviç Dostoyevski";
           bookList[1].BookName="Gümüş Gerdanlık";
           bookList[1].Author="Julia Andersson";
           bookList[2].BookName="Vadideki Zambak";
           bookList[2].Author="Honore de Balzac";
           bookList[3].BookName="Simyacı";
           bookList[3].Author="Paulo Coelho";
           bookList[4].BookName="Acı Reçete";
           bookList[4].Author="Arthur Hailey";

           var newList = bookList.OrderBy(b => b.BookName).ToList(); // BookName alanına göre sıralama yapıyor.

           var newListDesc = bookList.OrderByDescending(b => b.BookName).ToList();
     }
}

23 Şubat 2012 Perşembe

Yerel IP Adres Listesinin Alınması (Get Local IP Address List)

Statik yöntem olan Dns.GetHostAddresses kullanarak bilgisayar IP adreslerinin listesini alabilirsiniz. Yerel IP adreslerinin listesini almak için Dns.GetHostAddresses yöntemine bir parametre olarak yerel bilgisayar adı geçilmesi gerekmektedir.

Yerel  bilgisayar adı alınışı;
string localComputerName = System.Net.Dns.GetHostName();

Yerel  IP adreslerinin listesinin alınışı;
IPAddress[] localIPAddressLst = System.Net.Dns.GetHostByName(System.Net.Dns.GetHostName());

1 Şubat 2012 Çarşamba

Blogger'ın Domain'e Yönlendirilmesi

Blogger'ı domaine yönlendirmek. Örneğin; blogadresi.blogspot.com isminde bir blog adresiniz var ve bu adresi herhangi bir domain hizmeti veren bir firmadan satın aldığınız "blogadresi.com" isimli domaine yönlendirmek istiyorsunuz.

Bloğunuzun yönetim panelinde Ayarlar > Temel menüsünden "Yayıncılık" başlıklı kısımda blog adresinizin altında yer alan "+ Özel alan adı ekle" yi tıklayınız.


Domain adresini yeni alacaksınız domain adresini yazıp "kullanılabilirliği denetle" butonuna tıklayınız. Eğer başka bir firmadan domain adını almışsanız. "Gelişmiş ayarlara geç" i tıklayınız.


Domain adresini ilgili alana yazarak "Kaydet" butonuna basınız.


Yönlendirme işlemi tamamlanmıştır.



Bundan sonraki adımlar domin adresini başka bir firmdan satın aldıysanız yapmanız gerekenlerdir. Satın aldığınız firmanın yönetim panelinde DNS ayarlarına girip Alias (CNAME) kayıtlarına  bölge (zone) alanına "www", sunucu (server) alanına "ghs.google.com" yazarak ekleyiniz.


Ayrıntılı bilgi için: http://support.google.com/blogger/bin/answer.py?hl=tr&answer=68503
http://support.google.com/blogger/bin/static.py?hl=tr&ts=1233381&page=ts.cs

26 Ocak 2012 Perşembe

SQL Server 2008 tasarım modunda bir tablonun değiştirilmesi

Sql Server'da her zaman TSQL kullanarak bir tablo için yapısal bir değişiklik yapılması tavsiye edilir. Ancak, veritabanı geliştiricileri için SQL Server Management Studio kullanarak değişiklikler yapmak uygun bir seçenektir. SQL Server 2008 Management Studio' da varsayılan olarak etkin olan "Prevent saving changes that require the table re-creation" seçeneği seçili olduğundan değişiklik yapılmak istendiğinde aşağıdaki uyarı mesajı ile karşılaşılır.
 
"Saving changes is not permitted. The changes that you have made require the following tables to be dropped and re-created."

Bu uyarıyı almadan SQL Server Management Studio kullanarak tasarım modunda tablolar üzerinde değişiklik yapabilmek için varsayılan olarak seçili olan "Prevent saving changes that require the table re-creation" seçeneğinin seçili olmaması gerekmektedir.

Bunun için
SQL Server Management Studio da "Tolls" menüsünden "Options" seçeneği seçilir. Açılan penceredeki soldaki ağaç yapısındaki menü'den "Designers" ın altında yer alan "Table and Database Designers" seçilir. Bu ekrandaki "Prevent saving changes that require the table re-creation" özelliğinin yanındaki check işareti kaldırılarak "ok" butonuna basılarak değişikler uygulanır.



19 Ocak 2012 Perşembe

Multi thread yaşam.

İlk görevle başlıyor ilk nefes. Öyle ya! Nefes almakta bir görev değil mi?? Her nefeste de görevleşmiş zamanlar. Bir bakmışız görev bitmiş.

Multithread bir yaşam multi thread'de de zamanı iyi ayarlamak lazım. Bir yazılımcıdan da böyle bir bitiş beklenirdi zaten :))

/* Hepsi bir tarafada sosyal aktiviteleri bile bir görev gibi yapar oldum sinirimi bozanda bu zaten. pehh :p

Bilmeyenler için kısaca Multi Thread : Birden fazla işin (görevin :) ) aynı anda yapılması.
*/

Minimum Kapsayan Ağaç (Minimum Spanning Tree)

C# da minimum kapsayan ağaç algoritmasını uyguluyoruz. Algoritma hakkında detaylı bilgiyide ekleyeceğim. Şimdilik c# kodlarını sizlerle paylaşıyorum.


using System;

namespace MinimumSpanningTree
{
    public abstract partial class BaseEntity
    {
    }
}

------------------------------------------------------------------------------------------
using System;

using System.Collections.Generic;

namespace MinimumSpanningTree
{
    public abstract partial class BaseEntityCollection : List where T : BaseEntity, new()
    {
    }
}

------------------------------------------------------------------------------------------
using System;

namespace MinimumSpanningTree
{
    public partial class GraphEdgeCollection : BaseEntityCollection
    {
    }
}



------------------------------------------------------------------------------------------
using System;

namespace MinimumSpanningTree
{
    public partial class GraphEdge : BaseEntity
    {
        #region Ctor
        public GraphEdge()
        {
        }
        #endregion

        #region Properties
        ///<summary>
        /// Kenarın bağlı onduğu başlangıç noktası
        /// </summary>
        public int StartNode { get; set; }

        /// <summary>
        /// Kenarın bağlı onduğu bitiş noktası
        /// </summary>
        public int FinishNode { get; set; }

        ///<summary>
        /// Kenarın ağırlığı
        /// </summary>
        public int EdgeWeight { get; set; }      
        #endregion
    }

}

------------------------------------------------------------------------------------------
using System;

namespace MinimumSpanningTree
{
    class Program
    {
        /// <summary>
        /// Graph listesini kenar ağırlıklarına göre sıralar.
        /// </summary>
        /// <param name="x" />
        /// <param name="y" />
        /// <returns></returns>
        private static int CompareEdgeWeights(GraphEdge x, GraphEdge y)
        {
            if (x == null)
            {
                if (y == null)
                    return 0;
                else
                    return -1;
            }
            else
            {
                if (y == null)
                    return 1;
                else
                    return x.EdgeWeight.CompareTo(y.EdgeWeight);
            }
        }
        static int nodeNumber = 0;
        static void Main(string[] args)
        {
            try
            {
                GraphEdgeCollection graphEdgeCol = ReadGraph();
                graphEdgeCol.Sort(CompareEdgeWeights);
                int totalWeight = 0;
                int counter = 0;
                foreach (GraphEdge edge in graphEdgeCol)
                {
                    //Listemiz kenar ağırlıklarına göre sıralandığı için burada seçim yaptırmıyoruz. Sıradakini alıyoruz.
                    if (counter == nodeNumber - 1)
                    {
                        Console.WriteLine("Toplam Ağırlık:" + totalWeight);
                        Console.ReadKey();
                        return;
                    }
                    if (edge.StartNode == edge.FinishNode)//Halka içeriyor bir sonraki kenara bak
                        continue;
                    Console.WriteLine("({0},{1})={2}", edge.StartNode, edge.FinishNode, edge.EdgeWeight);
                    totalWeight += edge.EdgeWeight;
                    counter++;
                }
                Console.WriteLine("Toplam Ağırlık:" + totalWeight);
            }
            catch (Exception exc)
            {
                Console.WriteLine("HATA OLUŞTU: " + exc.Message);
            }
            Console.ReadKey();
        }

        ///<summary>
        /// Graf'ın tanımlanması için kullanılan fonksiyon
        /// </summary>
        private static GraphEdgeCollection ReadGraph()
        {
            try
            {
                Console.WriteLine("Graf düğüm sayısını giriniz...: ");
                nodeNumber = Int32.Parse(Console.ReadLine());//Düğüm sayısı okundu.
                int edgeNumber = nodeNumber;//Düğüm sayısı kadar edge olabilir
                GraphEdgeCollection graphEdgeCol = new GraphEdgeCollection();
                GraphEdge graphEdge = new GraphEdge();
                int[,] graphEdgeArr = new int[nodeNumber, edgeNumber];//Dizinin iki paremetreside düğüm numarası
                for (int i = 0; i < nodeNumber; i++)
                {
                    for (int j = 0; j < edgeNumber; j++)
                    {
                        if (graphEdgeArr[i, j] > 0 && graphEdgeArr[j, i] > 0)// Daha önce ağırlık değeri girilmiş ise
                            continue;
                        Console.WriteLine("{0}. düğüm ile {1}. düğüm arasındaki kenarın (edgenin) ağırlığını girin...:", i + 1, j + 1);
                        int weight = Int32.Parse(Console.ReadLine());
                        if (weight != 0)
                        {
                            graphEdgeArr[i, j] = weight;
                            if (i != j)
                                graphEdgeArr[j, i] = weight;
                            //bu kontrole gerek kalmadı çünkü yukarıda aynı ise buraya gelmiyor.
                            //if (graphEdgeCol.Find((a) => a.StartEdge == i && a.FinishEdge == j) ==null &&
                            //    graphEdgeCol.Find((a) => a.StartEdge == j && a.FinishEdge == i)==null)
                            //{
                            graphEdge = new GraphEdge();
                            graphEdge.StartNode = i+1;
                            graphEdge.FinishNode = j+1;
                            graphEdge.EdgeWeight = weight;
                            graphEdgeCol.Add(graphEdge);
                            //}
                        }
                    }
                }
                return graphEdgeCol;
            }
            catch (Exception)
            {
                throw;
            }
        }

        static void deneme()
        {
            try
            {
                Console.WriteLine("Graf düğüm sayısını giriniz...: ");
                int nodeNumber = Int32.Parse(Console.ReadLine());//Düğüm sayısı okundu.
                int edgeNumber = nodeNumber;//Düğüm sayısı kadar edge olabilir
                int[,] graphEdge = new int[100/*Düğüm sayısı*/, 4];
                //int[,] graphEdge = new int[nodeNumber/*Düğüm sayısı*/, edgeNumber];
                int[,] tree = new int[nodeNumber, edgeNumber];
                for (int i = 0; i <= nodeNumber; i++)
                {
                    for (int j = i + 1; j <= nodeNumber; j++)
                    {
                        Console.WriteLine("{0}. düğüm ile {0}. kenarın (edgenin) ağırlığını girin...:", i + 1, edgeNumber);
                        int weight = Int32.Parse(Console.ReadLine());
                        if (weight != 0)
                        {
                            //graphEdge[edgeNumber, j] = weight;//ağırlığı
                            graphEdge[edgeNumber, 1] = i;//ağırlığı
                            graphEdge[edgeNumber, 2] = j;//ağırlığı
                            graphEdge[edgeNumber, 3] = weight;//ağırlığı

                            edgeNumber++;
                        }
                    }
                }
            }
            catch (Exception exc)
            {
                Console.WriteLine("HATA OLUŞTU: " + exc.Message);
            }
            Console.ReadKey();
        }
    }
}

C# ile Fibonacci Hesaplama

Klavyeden girilen n. sıradaki fibonacci sayısını veren program.

Önce fibonacci hakkında bilgi alalım. Bilgi için tıklayınız.

using System;
namespace CalculateFibonacci
{
    class Program
    {
        static void Main(string[] args)
        {
            int a;
            Console.Write("Kaçıncı Sıradaki Fibonacci Sayıyısını İstiyorsunuz..:");
            a = Convert.ToInt32(Console.ReadLine());
            int[] Fabo = new int[a];
            for (int i = 0; i < a; i++)
            {
                if (i<2)
                    Fabo[i] = i;
                else
                    Fabo[i] = Fabo[i-1] + Fabo[i -2];
                Console.WriteLine((i + 1) + ".Sıradaki Fibonacci Sayısı..:" + Fabo[i]);
            }
            Console.ReadLine();
        }
    }
}

18 Ocak 2012 Çarşamba

Java'da Ondalık Tabandaki Bir Tamsayının İkilik Tabana Dönüştürülmesi

Klavyeden okunan ondalık tabandaki bir tamsayıyı ikilik tabana dönüştüren program.

package fulyaodabasi;

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Decimal2Binary();
    }

    private static void Decimal2Binary()
    {
      System.out.print("Sayı giriniz :");
      int decNumber = new Scanner(System.in).nextInt();
      String binNumber="";
      if (decNumber <= 0)
      {
          System.out.println("Girmiş olduğunuz sayı sıfırdan büyük olmalıdır.");
          return;
      }

      while (decNumber != 0)
      {
          if (binNumber.length() % 5 == 0)
              binNumber = " " + binNumber;
         
          binNumber = (decNumber % 2) + binNumber;

          decNumber /=2; // decNumber = decNumber / 2;
      }
      System.out.println("İkilik (Binary) sayı: " + binNumber);
    }
}

Bunlarda ilginizi çekebilir : 
C#'da 16'lık Sistemden 2'lik Sisteme Çevirme
C#'da 2'lik Sistemden 16'lık Sisteme Çevirme

Java'da Ortalama, Standart Sapma, Ortanca (Median) Hesaplama

Rastgele olarak dolduracağınız bir tamsayı dizisinin ortalamasını, standart sapmasını, ortancasını (median) ve ağırlıklandırılmış ortalamasını hesaplayan program.

import java.util.Arrays;
public class Main {

     public static void main(String[] args) {
        int[] arrNumber = new int[1000];
        int arrLength = arrNumber.length;
        //-----Ortalaması
        int sumNumber =0;
        for (int i= 0; i < arrLength; i++)
        {
           arrNumber[i]=(int)(Math.random()*255);
           sumNumber+= arrNumber[i];
        }
        double avg = sumNumber/arrLength;
        System.out.println("Ortalaması : " + avg);
        //-----Standart sapma
        double standardDevNum=0;
        for (int i= 0; i < arrLength; i++)
        {
           double s = arrNumber[i]-avg;
           standardDevNum += s*s;//karesi
        }
        double standardDev = Math.sqrt(standardDevNum/2);
        System.out.println("Standart sapması : " + standardDev);
        //-----Ortancası (Median)
        Arrays.sort(arrNumber);
        double median = 0;
        int mid=0;
        // median = (0.5*(arrLength+1));
        if(arrLength %2 == 1)//dizi eleman sayısı tek ise
        {
            mid = (arrLength + 1) / 2;
            median = arrNumber[mid] ;
        }
        else{//dizi eleman sayısı çift ise
            mid = arrLength/2;
            median= (arrNumber[mid-1] + arrNumber[mid]) / 2.0;
        }
     
        System.out.println("Ortanca (Median) : " + median);
     }
}

Java'da Permütasyon Hesaplama

N tane tamsayı içeren bir dizinin tüm permütasyonlarını ekrana yazdıran program.
Örnek: 1,2,3 için: 3! permütasyon olur. 3! = 3*2*1 = 6
            3! permütasyon için çıktı 1 2 3, 1 3 2, 2 1 3, 2 3 1, 3 1 2 ve 3 2 1 'dir.

package fulyaodabasi;

import java.util.Arrays;

public class Main {
   
     public static void main(String[] args) {
        int arrLength=3;
        int[] arrNumber = new int[arrLength];
        /*for (int i = 0; i < arrLength; i++) {
          arrNumber[i]=(int)(Math.random()*10);
          System.out.println("dizi {0}. elemanı"+arrNumber[i]);
        }*/
        arrNumber[0]=1;
        arrNumber[1]=2;
        arrNumber[2]=3;

        GetPermutations("", arrNumber);
    }

    private static void GetPermutations(String current,int[] arrNumber)
    {
        int arrLength = arrNumber.length;
        if(current.length() < arrLength)
        {
            for (int i= 0; i < arrLength; i++) {
                String digitString = String.valueOf(arrNumber[i]);
                if (current.indexOf(digitString) < 0)
                    GetPermutations(current + arrNumber[i], arrNumber);
            }
       }
       else if (current.length() == arrLength)
           System.out.println(current);
    }
}

Java'da Olağanlaştırılmış Histogram

0 ile 255 arasındaki tamsayılar ile rastgele olarak doldurulmuş 10.000'lik bir dizinin olağanlaştırılmış histogramını hesaplayan program.

package fulyaodabasi;

import java.util.Arrays;
public class Main {

    public static void main(String[] args) {
        OlaganlastirilmisHistogram();
    }

     private static void OlaganlastirilmisHistogram()
    {
        int[] arrNumber = new int[10000];
        double[] arrHist = new double[255];

        for (int i= 0; i < arrNumber.length; i++)
        {
            //127 250-1
            arrNumber[i]=(int)(Math.random()*255);
            arrHist[arrNumber[i]]=arrHist[arrNumber[i]]+1;
            System.out.println("ilk dizinin " + (i+1) + ".elemanı :" + arrNumber[i]);
        }
        //Histogramı olağanlaştırıyoruz
        for (int i= 0; i < arrHist.length; i++) {
            arrHist[i]=arrHist[i]/arrHist.length;
            System.out.println("Histogramın " + (i) + ".elemanı :" + arrHist[i]);
        }
    }

}

12 Ocak 2012 Perşembe

Kare Matris İçinde Eşkenar Dörtgen Yazdırmak

Kullanıcının girdiği bir sayıyı okuyarak ekrana verilen boyutta kare matris içinde boş eşkenar dörtgen yazdıran program.

Ekran Çıktısı

#include "stdafx.h"
#include <iostream>
#include <string>

void main()
{
  int sayi;
  scanf("%d",&sayi);
  printf("Girilen matris boyutu : %d\n",sayi);
  int medyan = 0;
  if(sayi % 2 == 0)
      medyan = sayi/2;
  else
      medyan= (sayi+1)/2;

  std::string str ="*";
  int pad =0;
   int tmp=0;
  for(int i=1; i<=sayi; i++)
  {
      str="";
      pad=medyan-i;

      if(pad<0)
          pad *= -1;

      str.insert(0,pad, ' ');
       if(i==sayi && sayi % 2 == 0)
      {
          str.insert(str.size()-2, 1, '*');
      }
      else
        str.insert(str.size(), 1, '*');


      if(i>1 && (i!=sayi && sayi % 2 != 0))
      {
        str.insert(str.size(), sayi-((pad*2)+2), ' ');
        str.insert(str.size(), 1, '*');
      }
      else if(i>1 && (i<(sayi-1) && sayi % 2 == 0))
      {
        str.insert(str.size(), (sayi-1)-((pad*2)+2), ' ');
        str.insert(str.size(), 1, '*');
      }
      else if(i==sayi && sayi % 2 == 0)
      {
         str.insert(str.size()-1, 1, '*');
      }
      std::cout << str << std::endl;
  }
}

10 Ocak 2012 Salı

Uzun uzun zaman sonra Merhaba!!! :)

Son 2 senedir beni içerisine alan zaman kasırgası biraz durulduda (1-2 günlük bir süre) bende kendisiyle yarışır gibi hemen yapamadıklarımdan başladım yine. 1 gün 48 saat olsa yine yetmezde bana işte ardı arkasına birikenler yapılmadıkça sadece dağlaşıyor karşımda. Bu dağın karşısında daha fazla minnacık kalmadan biryerden listeyi azaltmak gerek diye düşündüm ve uzunca zaman önce başlattığım bilgi paylaşımı bloğuma geri döndüm :).
Eee tabi başka isteklerimde yok değil ama bu kasırgayı coşturmak olur, coşsun coşsunda sonunda kasırga durulduğunda ben ben olmayabilirim :). İş ve okul hayatını bir arada götürmek fazlasıyla yordu ama okulun bitmesine az zaman kalmasının ve ara tatile girmiş olmanında verdiği doping ile coştum. Bu enerjiyi iyi değerlendirip daha fazla paylaşımda bulunmaya çalışacağım.
Ayrıca bu ara arkadaşlarla yeni proje fikri üzerinde yoğunlaştık, fırsat buldukça yapacağımız çalışmaları okul bitince hızlandırıp bir an önce hepinizlede paylaşmak istiyoruz. Sonuç mu? Bence eğlenceli olacak.
Döndüm ben Merhaba!!! :) Herkese zamanı iyi değerlendirebileceği anlar diliyorum.

Merhaba,

Fulya Odabaşı.

9 Ocak 2012 Pazartesi

EnableEventValidation

Invalid postback or callback argument. Event validation is enabled using in configuration or <%@ Page EnableEven Invalid postback or callback argument. Event validation is enabled using in configuration or <%@ Page EnableEventValidation="true" %> in a page. For security purposes, this feature verifies that arguments to postback or callback events originate from the server control that originally rendered them. If the data is valid and expected, use the ClientScriptManager.RegisterForEventValidation method in order to register the postback or callback data for validation.

EnableEventValidation'ın default değeri true dur. EnableEventValidation="false" yaptığınızda sorun çözülür.