C# etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
C# etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

21 Ocak 2022 Cuma

C# 'Oracle.DataAccess' dosyasını veya bütünleştirilmiş kodunu ya da bağımlılıklarından birini yükleyemedi. Geçersiz biçimdeki bir program yüklenmek istendi.

Arkadaşlar,

Visual Studio ile Oracle database bağlanarak web servis uygulaması geliştirmeye çalıştığınızda başlıktaki hatayı alma ihtimaliniz çok yüksek.

Sorunu çözmek uzun sürebiliyor. Bu nedenle sorunun kısa çözüm yolunu aşağıda paylaşıyorum.

Sırasıyla resimdeki menülerden erişeceğiniz ekranda" Use The 64 bit version of IIS Express for web sites and project " seçeneğini işaretlemelisiniz.

















Diğer kontrol edilmesi gereken ikinci kısım ise aşağıdaki gibidir. Bu alanı x86 olarak değiştirebilirsiniz. Ancak projeye eklediğiniz dll 64 bit ise bu alanın x64 olarak kalması önerilir.



Share:

17 Mart 2016 Perşembe

c# Tarih Yilin Kacinci Haftasi Fonksiyon

C Sharp: İstenilen tarihin yılın kaçıncı haftası olduğunu gösteren metot


İstenilen tarihin yılın kaçıncı haftası olduğunu bulmak için aşağıdaki metot kullanılabilir. Framework içindeki Datetime sınıfında olmayan ancak işinize yarayabilecek bir metottur.


public int GetWeekNumber(DateTime dtPassed)
{
 CultureInfo ciCurr = CultureInfo.CurrentCulture;
 int weekNum = ciCurr.Calendar.GetWeekOfYear(dtPassed,CalendarWeekRule.FirstFourDayWeek,      DayOfWeek.Monday);
 return weekNum;

}

Kullanımı:
int hafta = GetWeekNumber(DateTime.Now);  // 01.03.2016
//hafta= 12 olacaktır 
Share:

16 Mart 2016 Çarşamba

C# ve SQL Server ile eşsiz değerler nasıl üretilir (How to generate a unique ID using C# and SQL Server)

C# ve SQL Server ile eşsiz değerler nasıl üretilir (How to generate a unique ID using C# and SQL Server)

Geliştirdiğimiz iş yazılımlarında bir çok veri üretiyoruz, bu üretilen verilerin çoğu bir biri ile bağlantılı. Bu bağlantıyı sağlamak için tüm ilşkili tablolar arasında EŞSİZ bir anahtar değere ihtiaycımız var. Veritabanı ile ilgilenenler bilir bu eşsiz anahtar değer Primary Key (PK) olarak adlandırılır. Bu PK değeri tablo içindeki milyonlarca değer için eşsiz olarak oluşturulur. Amacı milyon kaydın içinden istediğimiz “X” satıra erişebilmek ve onunla gerekli işlemler yapabilmek. Aynı zamanda bu PK değerler tablolar arasında da kullanılır ve zincirleme bir çok tabloyu bir birine bağlar. Daha sonra bu tablolar bir biri ile bağlanıp karmaşık sorgular ve raporlar edle edilebilir.
Şu anda çok şirketin, işyerinin olduğu bir ortamda çalışıyorum. Bu ortamda aynı zamanda çok karmaşık bir satınalma onay süreci var. A şirketinde onay süreci A->B->C olarak gereçekleşiyor. F şirketinde A->D->B->Z  şeklinde gerçekleşiyor. Bu karmaşık ortam için  kolay kullanılabilen-yönetilebilen ve çok esnek bir onay yapısına sahip Web tabanlı bir SATINALMA yazılımı geliştiriyorum. Bu karmaşık yapı nedeni ile birçok tablo arasında mantıksal bağlantı olmalı. Bu yapının birkaç tablosu aşağıdaki gibi:
CREATE TABLE [dbo].[SATINALMA_TALEP]
(
[ID] [uniqueidentifier] NOT NULL,
[TARIH] [datetime] NOT NULL,
[ACIKLAMA] [varchar](150) NOT NULL,
[SIRKET_ID] [int] NOT NULL,
[ISYERI_ID] [int] NULL,
CREATE TABLE [dbo].[SATINALMA_TALEP_DETAY]
(
[ID] [int] IDENTITY(1,1) NOT NULL,
[TALEP_ID] [uniqueidentifier] NOT NULL,
[STOK_KODU] [varchar](35) NULL,
[MIKTAR] [decimal](18, 5) NULL,
CREATE TABLE [dbo].[SATINALMA_TALEP_HAREKET]
(
[ID] [int] IDENTITY(1,1) NOT NULL,
[TALEP_ID] [uniqueidentifier] NOT NULL,
[TARIH] [datetime] NULL,
[GOREVLI_ID] [int] NULL,
CREATE TABLE [dbo].[SAT_TALEP_EKLER]
(
[ID] [int] IDENTITY(1,1) NOT NULL,
[TALEP_ID] [uniqueidentifier] NOT NULL,
[EK] [varchar](250) NULL,
Buradaki tabloları birbirine bağlayan ilk tablodaki ID değeri. Bu değerin eşsiz olarak üretilmesi çok önemli. Bu sayede veriler arasında bağlantı güvenli bir şekilde sağlanmış olacak. Bu değer Primary Key veritabanı tarafından otomatik olarak da üretilebilir (SQL Server’da IDENTITY SEED ve Oracle’da CREATE SEQUENCE). Ama bu ileride birçok veritabanı ile çalışırken ve Database Replikasyonu gibi işlemler yapmak zorunda kalırsak  sorun çıkarabiilir. Büyük ve dağınık yapıda veritabanı yapısı tasarlarken kullanılacak en iyi  PrimaryKey veri tipi GUID. Bu nedenle biz veriler üzerinde KESİN ve NET kontrol sağlamak için kendi yaratığımız eşsiz ID (GUID) değerlerini üretip kullanacağız. Bu amaçla C# ve T-SQL ile ayrı ayrı bunu nasıl yapacağımızı göstereceğim.

public  Guid  NewRecordID()
{
//How to generate COMB ID
//Sağlam bir çözüm bunu kullan
//bu değeri SQL Serverda depolamak için …ID [uniqueidentifier] NOT NULL şeklinde olmalı

byte[] destinationArray = Guid.NewGuid().ToByteArray();
DateTime time = new DateTime(0x76c, 1, 1);
DateTime now = DateTime.Now;
// Get the days and milliseconds which will be
// used to build the byte string
TimeSpan span = new TimeSpan(now.Ticks – time.Ticks);
TimeSpan timeOfDay = now.TimeOfDay;
// Convert to a byte array
// Note that SQL Server is accurate to 1/300th of a
// millisecond so we divide by 3.333333
byte[] bytes = BitConverter.GetBytes(span.Days);
byte[] array = BitConverter.GetBytes(
(long)
(timeOfDay.TotalMilliseconds / 3.333333));
// Reverse the bytes to match SQL Servers ordering
Array.Reverse(bytes);
Array.Reverse(array);
// Copy the bytes into the guid
Array.Copy(bytes, bytes.Length – 2,
destinationArray,
destinationArray.Length – 6, 2);
Array.Copy(array, array.Length – 4,
destinationArray,
destinationArray.Length – 4, 4);
return new Guid(destinationArray);
}

CREATE  PROCEDURE    [dbo].[NewRecordID]
(@NewId [UNIQUEIDENTIFIER] OUTPUT)
AS
BEGIN

—SET @NewId = NEWID()  — generate new ID  TEST AMAÇLI
SET @NewId= CAST(CAST(NEWID() AS BINARY(10)) + CAST(GETDATE() AS BINARY(6)) AS UNIQUEIDENTIFIER)
–SELECT @NewId –TEST AMAÇLI
END
Şimdi bu Stored Procedure nasıl şalıştırılacak onu yazalım. Öncelikle stored procedure çalıştırmak için sembolik bir UNIQUEIDENTIFIER değere ihtiyacımız var. Onu kullanarak SP çalıştırılacak ve SP yeni ID değerler üretecek

Exec  [dbo].[NewRecordID]   ‘B551F2C8-8380-491B-A51F-436E51CDD08F’   –sql SP testi

ve bu SP’nin üretiği eşsiz ID sonuçları  :
76FAB26E-FB5F-4E4F-B21D-A38B00D36903
9B4BBA9E-D557-4B6D-BBE1-A38B00D37E62
B0382D9C-1B4A-4CC8-AC63-A38B00D39024
C079B776-0B3F-46D8-9A12-A38B00D3874C

KAYNAK : https://apoleptika.wordpress.com/2013/05/01/netsis-cari-hesaplarin-borc-alacak-bakiyelerini-gosteren-mobil-yazilim-gelistirme-1/
Bu değerli ve zaman kazandıran bilgi için Abdurrahman Hacıoğlu' na teşekkür ederim.
Share:

7 Temmuz 2015 Salı

Fast reporta dışarıdan sorgu ekleme

Bu makalemizde fastreportta oluşturulan raporlara exe’ye müdahale etmeden AdoQuery ile yeni alanlar eklemekten bahsedeceğim
örneğin yazdığınız programda bir çok alanı öngörerek sorgunuza eklediniz ve harika çalışıyor hatta son kullanıcınında dizayn edebileceği bir yapı kurdunuz kendisi sağa sola çekiyor renkleri değiştiriyor istediği gibi dizayn edebiliyor ancak o da ne ihtiyacı olan bir alanı bulamıyor ve sizinde gözünüzden kaçmış bunun için sizin sorguya ilave etmeniz ve yeni bir exe göndermeniz gerekiyor bir çuval

incir berbat oldu yarın başka bir müşteri başka bir alan istemeye başladı vs.vs. bunun için yapmanız gereken püf nokta sorgunuza anahtar alanları eklemeyi unutmamış olmanız yeterli ve sonrasında fast report dizayn ekranında kod kısmını kullanarak
ihtiyacınız olan alanları join edebilirsiniz
basit bir örnek vereceğim
fr1de görüldüğü gibi yeni bir memo ekliyoruz ve memo seçili iken




fr2 onbeforeprint eventına çift tıklayak kod kısmının açılmasını sağlıyoruzdaha sonra data kısmına girerer bir  adoconnection ve bir adoquery ekliyoruz ve bağlantı ayarlarımızı yaparak
kod kısmına geri dönüyoruz


fr3resimdeki sorguyu datasette olan bir alan ile join ederek yeni memoları ihtiyacınıza göre kullanıyoruz
umarım ihtiyaç sahibi arkadaşlara faydalı olacaktır.

Bu Yazı : http://www.mustafasoy.com.tr 'den alınmıştır.
Share:

24 Mart 2014 Pazartesi

Crystal report & Sap Runtime report resim ekleme

Crystal report ile raporda dinamik resim göstermek için raporumuza öncelikle, insert menüsünden image seçeneği ile lokal bir resim ekliyoruz.


Ardından resim üzerinde sağ tıklayıp format graphic seçeneğini seçiyoruz



Resimdeki X2 yazan yere tıklayıp açılan pencerede data bağlantısı kısmıdan ilgili alanı veritabanı bağlantımızdan seçip uyguluyoruz.

İşlem tamam.


.
Share:

26 Kasım 2013 Salı

The remote server returned an error: (500) Internal Server Error (Webclient)

Solution this ;

You must add this code :
client.Headers.Add("user-agent","Mozilla/5.0 (Windows NT 6.1; rv:2.0) Gecko/20100101 Firefox/4.0");

Uri url = new Uri(urlAddress);
            WebClient client = new WebClient();
            client.Headers.Add("user-agent","Mozilla/5.0 (Windows NT 6.1; rv:2.0) Gecko/20100101 Firefox/4.0");
            client.Encoding = System.Text.Encoding.UTF8;
            string html = client.DownloadString(url);
            return html;
Share:

18 Kasım 2013 Pazartesi

C# Combobox nesnesinde otomatik tamamlama

ComboBox Nesnesinde Otomatik Tamamlama

İlk önce Şekil 1 deki gibi comboBox1.AutoCompleteMode =AutoCompleteMode.SuggestAppend; olarak seçin. Daha sonra ComboBox nesnesinin AutoCompleteSource i AutoCompleteSource.CustomSource; seçiyoruz. Oluşturulan String Koleksiyonumuzu AutoCompleteSource kısmında gösterimini sağlıyoruz.

Şekil 1


Şekil 2

Form1.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
//Bu kısımda AllSystemSource, AllUrl de seçilebilir.
//Burada CustomeSource ü seçiyoruz.
comboBox1.AutoCompleteSource = AutoCompleteSource.CustomSource;
// AutoComplete String Koleksiyonu oluşturuyoruz.
AutoCompleteStringCollection veri = new AutoCompleteStringCollection();
veri.Add("Bahadır ŞAHİN");
veri.Add("Haluk Aydın");
veri.Add("Fatih Koç");
veri.Add("Bülent Ceyhun");
veri.Add("Mehmet Alp");
comboBox1.AutoCompleteCustomSource = veri;
}
}
}
Share:

28 Ekim 2013 Pazartesi

c# Blogspot Code Writing

Share:

C# ile geçerli E-Mail adres kontrolü

using System.Text.RegularExpressions;

private const string MatchEmailPattern = 
                  @"^(([\w-]+\.)+[\w-]+|([a-zA-Z]{1}|[\w-]{2,}))@" 
           + @"((([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\.([0-1]? 
                                [0-9]{1,2}|25[0-5]|2[0-4][0-9])\." 
           + @"([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\.([0-1]? 
                                [0-9]{1,2}|25[0-5]|2[0-4][0-9])){1}|" 
           + @"([a-zA-Z]+[\w-]+\.)+[a-zA-Z]{2,4})#CODE#quot;; 
     
private string mail = hakan@hakanöncel.com


private void button1_Click(object sender, EventArgs e) 
        { 
            bool retVal = false; 
            retVal = Regex.IsMatch(mail, MatchEmailPattern); 
            if (retVal) 
            { 
                MessageBox.Show("OK"); 
            } 
            else 
            { 
                MessageBox.Show("FAIL"); 
            } 
        }
Share:

11 Eylül 2013 Çarşamba

C# updatepanel içerisinde çalışmayan javascript ; Javascript not working inside Updatepanel

Asp.net projelerimizde update panel kullandığımızda javascript fonksiyonları bir kez çalışır ve update panel post back olduktan sonra artık çalışmaz.
Bu durum tabi ki biz developer’ların canını oldukça sıkar.
Çözümü ise gayet basit:
update panel’in Content Template tag’ı içerisinde aşağıdaki kod bloğunu eklemek ve ilgili javascript fonksiyonumuzu veya fonksiyonlarımızı burada yazmaktır.

<script type="text/javascript">
        function pageLoad(sender, args) {
 // kodlar buraya gelecek
 // code here
 }      
</script>
Share:

3 Eylül 2013 Salı

C# Asp.net Sql Injection


public static string KillSqlInjectionWords(string WithBadChars)
{
string[] SqlInjectionKeywords = {    "select",  "drop",   ";",  "--", "insert",  "delete", "xp_","sp_", "exec", "'"
 };
string WithoutBadChars = "";
for (int i = 0; i < SqlInjectionKeywords.Length; i++)
{
WithoutBadChars = WithBadChars.Replace(SqlInjectionKeywords[i], "");
WithBadChars = WithoutBadChars;
}
return WithoutBadChars;
}


private void SqlClear(Control parent)
 {
     foreach (Control c in parent.Controls)
     {
          if (c.Controls.Count > 0)
              SqlClear(c);
          else
          {
               if (c is TextBox)
                   ((TextBox)c).Text = SqlKorunma.KillSqlInjectionWords(((TextBox)c).Text);
                  //(c as TextBox).Text = "";

               if (c is CheckBox)
                  (c as CheckBox).Checked = false;

                if (c is DropDownList)
                   (c as DropDownList).SelectedIndex = 1;
           }
       }
   }
}
   
Share:

30 Ağustos 2013 Cuma

C# Tek Satırda IF Kullanımı.

public void Giris(string gelenSifre)
{
    string sonuc = (gelenSifre == "Bizim şifremiz") ? "Şifre doğru" : "Şifre yanlış!";    
   MessageBox.Show(sonuc);
}
Share:

19 Temmuz 2013 Cuma

C# Veri Tipleri

C# Veri Tipleri

C#' ta veri tipleri Değer Tipleri ve Referans Tipleri olmak üzere iki kategori altında toplanır.

DEĞER TİPLERİ
C#' ta sbyte, byte, short, ushort, int, uint, long, ulong, float, double, decimal, bool ve char olmak üzere 13 adet veri tipi bulunmaktadır. Bu veri tiplerini dört rupta toplayabiliriz.

1. Tamsayı Veri Tipi
Bir insanınyaşı ile ilgili kayıt tutmak istiyorsak bu yaş aralığı 0 ile 120 arası olabilir. Bu durumda uygun olan veri tipi "byte" olarak görülmektedir. Örnek; byte yas = 20; Tamsayı veri tipleri aşağıdaki tabloda listelenmiştir.



2. Kayan Noktalı Sayı Veri Tipi
Bunlara gerçek sayılar da denilmektedir. Bunlardan "float" ve "double" veri tipleri noktadan sonraki sayıları yaklaşık olarak tutarken "decimal" veri tipi tam bir kesinlikle tutar. Paraal işlemlerde "decimal" veri tipi kullanılır.

3. Karakter(char) Veri Tipi
Klavyeden girilen her bir değere karakter denir. Bu değerler "char" veri tipinde tutulur. Bu veri tipi değişkende tek tırnak içinde tutulur. char Karakter = 'A';

4. Doğru/Yanlış(true/false) Veri Tipi
Evet/Hayır şeklinde sonuç verecek verilerde "bool" veri tipi kullanılır. bool degisken = true;

REFERANS TİPLERİ
Referans tipleri sınıflarla tanımlanır. Bunlardan en sık kullanılan "string" veri tipidir.
Share:

18 Temmuz 2013 Perşembe

C# nokta virgül problemi

C# ". , " nokta virgül ayarlarını program için özel olarak ayarlamak için formun load olayı içerisinde

---------------------------------------------------------------------------------------------------------------
using System.Globalization;
---------------------------------------------------------------------------------------------------------------
Thread.CurrentThread.CurrentCulture =  new CultureInfo("tr-TR");
Thread.CurrentThread.CurrentUICulture = new CultureInfo("tr-TR");
---------------------------------------------------------------------------------------------------------------


Veya 

---------------------------------------------------------------------------------------------------------------
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US");
---------------------------------------------------------------------------------------------------------------


Yazmanız yeterli.

Ayrıca sadece belirli bir ayarı set etmek istiyorsanız aşağıdaki gibi kullanabilirsiniz.


---------------------------------------------------------------------------------------------------------------
Thread.CurrentThread.CurrentCulture = new CultureInfo("tr-TR");
Thread.CurrentThread.CurrentUICulture = new CultureInfo("tr-TR");
    
System.Threading.Thread.CurrentThread.CurrentCulture.NumberFormat.NumberDecimalSeparator= ".";
---------------------------------------------------------------------------------------------------------------

Share:

1 Temmuz 2013 Pazartesi

Visual Studio 64 Bit Client Problemi

Microsoft Visual Studi 32 Bit developer makinesinde derlenen bir uygulamanın 64 Bit client da çalışabilmesi için yapılması gerekenler :













Evet Visual Studio kısmında yapılması gereken ayarlar bu kadar. Oracle 10g 64 Bit Client yazılım yüklemesini bir sonraki makalemde anlatacağım. 






Share:

22 Haziran 2013 Cumartesi

Access Modifiers (Erişim Belirleyiciler)

Access Modifiers (Erişim Belirleyiciler)

PRIVATE: Private belirleyicisinin kullanıldığı metot ya da parametreye sadece tanımlandığı sınıf içerisinden erişilebilir. Sınıflar varsayılan olarak private olarak tanımlanır.

PUBLIC: Public belirleyicisinin kullandığı metot ya da parametreye erişim tamamen serbesttir. Gerek tanımlandığı sınıf içerisinden gerekse tanımlandığı sınıf dışından erişmek mümkündür.

PROTECTED: Protected belirleyicisinin kullanıldığı metot ya da parametreye, sadece tanımlandığı sınıf içerisinden veya bu sınıftan türetilmiş sınıflardan erişilebilir.

STATIC: Eğer metoda direkt olarak sınıfın ismini kullanarak erişmek istersek metodu static olarak tanımlamamız gerekir. static olarak tanımlanan metotlar, sınıflardan türetilen nesnelerden bağımsız hareket ederler. Dolasıyı ile static metotları içerisinde tanımlandıkları class' dan yeni bir nesne oluşturmadan direkt olarak sınıf ismi.metot ismi şeklinde kullanabiliriz.

INTERNAL: Internal belirleyicisinin kullanıldığı metot ya da parametreye sadece tanımlandığı sınıf içerisinden erişilebilir. Hazırladığınız dll dosyasını aynı proje yada program içerisinde kullanabilir, ancak başka proje ya da programdan erişemezsiniz.

PROTECTED INTERNAL: Protected Internal belirleyicisinin kullanıldığı metot ya da parametreye tanımlandığı sınıf içerisinden, bu sınıftan türetilmiş başka bir sınıf içerisinden ya da aynı assembly içerisinden erişilebilir.

Share:

C# is ve as Operatörleri

C# is ve as Operatörleri

is operatörü : Bir değişkenin tipinin dönüşüm yapmak istediğimiz tiple is ile karşılaştırarak çevrimin doğru olup olmayacağını karşılaştırabiliriz. Yani is ile boolean bir değer elde edilir. is anahtar sözcüğü  değişken tipinin karşılaştırma tipine bakarak bize o mu değil mi bilgisini vererek tip dönüşümlerinde fayda sağlamaktadır. is sadece tanımlı tipler üzerinde çalışır,i yani biz bir class tanımlayıp bunun tipi hakkında bilgi almak istiyorsak is bize bu konuda yardımcı olamaz. YANİ İS CONTROL EDER

int i = 50;
bool b = i is string; // b false olur
as operatörü : Uygun türler arasında tür dönüşümünü sağlar.Daha önce is sadece tanımlı tipler üzerinde çalıştığını. Yani biz bir class tanımladıysak ve bunun tipi hakkında bilgi almak istiyorsak is bize bu konuda yardımcı olamayacağını söylemiştik. Bu durumda devreye as anahtar kelimesi devreye girer. is operotoruyle çok benzerdi fakat is operatoru boolean bir değer döndürürken as operatoru hedef tipin referansını döndürür. Eğer dönüşüm imkansız ise null değeri döndürür. YANİ AS ATAMA YAPAR

object i = "50";
string s = i as string;
Share:

14 Mayıs 2013 Salı

Gridview kolon adı bilgisine ulaşmak

Gridview kolon adlarına ulaşmak için kod ;

Hardcoded approach:
string searchValue = "SpecifiedName";
// where 1 is the hardcoded cell index
var query = from GridViewRow row in GridView1.Rows
            where row.Cells[1].Text == searchValue
            select row;
GridViewRow result = query.FirstOrDefault();
Dynamic Approach (Column Index Lookup):
string colName = "name";
int index = (from DataControlField col in GridView1.Columns
            where col.HeaderText == colName
            select GridView1.Columns.IndexOf(col)).FirstOrDefault();

// index used
var query = from GridViewRow row in GridView1.Rows
        where row.Cells[index].Text == searchValue
        select row;
GridViewRow result = query.FirstOrDefault();
Alternate index lookup: instead of using HeaderText you can use BoundField.
int index = (from DataControlField col in GridView1.Columns
            where ((BoundField)col).DataField == colName
            select GridView1.Columns.IndexOf(col)).FirstOrDefault();

WinForm DataGridView

Kept this here just in case.
string name = "SpecifiedName";
var query = from DataGridViewRow row in dataGridView1.Rows
            where row.Cells["name"].Value.ToString() == name
            select row;
// the row will be returned by this or contain a default value if not found
DataGridViewRow result = query.FirstOrDefault();
Share:

10 Mayıs 2013 Cuma

Masterpage css link class erişimi




--------Masterpage code source---------

<li><a href="home.aspx" id="HomeLink" runat="server"><i class="home"></i> Home</a></li>
<li><a href="Calendar.aspx" id="CalendarLink" runat="server"><i class="calendar"></i>Calendar</a></li>
<li><a href="Bill.aspx" id="BillLink" runat="server"><i class="list"></i>Bills</a></li>



-------Masterpage code behind---------


protected void Page_Load(object sender, EventArgs e)
    {
        SetCurrentPage();
    }

    private void SetCurrentPage()
    {
        var pageName = GetPageName();

        switch (pageName)
        {
            case "home.aspx":
                HomeLink.Attributes["class"] = "current";
                break;
            case "Calendar.aspx":
                CalendarLink.Attributes["class"] = "current";
                break;
            case "Bill.aspx":
                BillLink.Attributes["class"] = "current";
                break;
        }
    }

    private string GetPageName()
    {
        return Request.Url.ToString().Split('/').Last();
    }

Share:

Blog Arşivi