Herkese matrix yaklaşıyor, matrix gerçek olacak dediğimde, ha ha ha diyorlardı bana... Matrix 2'de, Nebuchadnezzar'ın Zion'a ilk girişinde, kapı kontrolörleri local bir matrix'e bağlıydı, bilgisayar kullanıyorlardı ve klavyeleri yoktu...

bana çok benzer geldi...
Artık 30 dan gün alıyorum.Yolu yarıladım... Bu ana kadar yanımda olan herkese çok teşekkür ediyorum...
http://www.csharpnedir.com/netvideo.asp linkinde bulunan Derinlemesine GridView & DetailsView görsel dersim hakkında Fatih arkadaşımızın sorusu: Benim anlamadığım bir nokta var: SP içinde id değerini kullanıyoruz oysaki en başta DataBind işlemini gerçekleştirirken bu kolonu remove etmiştik.
Evet Id kolonunu gridview üzerinde remove ettik ve id boundfield'larda gözükmüyor, fakat Gridview'un DataKeyNames özelliğine id kolonu atanmıştır.Dolayısı ile id alanı değeri gridview tarafından halen tutulmaktadır.Bu alana , (virgül) ayracı ile birden fazla kolon ismi atayabilirsiniz...
Umarım açıklayıcı olmuştur.
BHO nedir ilk önce bunu açıklayalım.Browser Helper Object, işletim sisteminde Browser görevini üstlenmiş bileşenler üzerinde çalışmak için tasarlanmış eklentilerdir.Internet Explorer 'a yazılan eklentiler iyi bir BHO örneği olacaktır.
BHO objemiz IObjectWithSite arayüzünden türemelidir.Bu arayüzün SetSite ve GetSite isminde iki metodu mevcuttur.İlk önce bu arayüzü gözden geçirelim.
using System; using System.Runtime.InteropServices;
namespace MyBHO { [ComVisible(true), Guid("FC4801A3-2BA9-11CF-A229-00AA003D7352"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] public interface IObjectWithSite { [PreserveSig] int SetSite([MarshalAs(UnmanagedType.IUnknown)]object site); [PreserveSig] int GetSite(ref Guid guid, out IntPtr ppvSite); } }
IE herhangi bir browser kontrolü oluşturduğunda SetSite çalışacak ve biz de gerekli nesneleri burada atayacağız. Şimdi IObjectWithSite arayüzünden türeyen MyBHO sınıfımızı inceleyelim.
using System; using System.Collections.Generic; using System.Text;
using System.Runtime.InteropServices; using Microsoft.Win32; using SHDocVw;
namespace MyBHO { [ComVisible(true), ClassInterface(ClassInterfaceType.None)] public class MyBHO : IObjectWithSite { WebBrowser webBrowser;
public MyBHO() { }
public static string BHOKEYNAME = "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Browser Helper Objects";
[ComRegisterFunction] public static void RegisterBHO(Type t) { RegistryKey key = Registry.LocalMachine.OpenSubKey(BHOKEYNAME, true);
if (key == null) key = Registry.LocalMachine.CreateSubKey(BHOKEYNAME);
string guidString = t.GUID.ToString("B"); RegistryKey bhoKey = key.OpenSubKey(guidString);
if (bhoKey == null) bhoKey = key.CreateSubKey(guidString);
key.Close(); bhoKey.Close(); }
[ComUnregisterFunction] public static void UnregisterBHO(Type t) { RegistryKey key = Registry.LocalMachine.OpenSubKey(BHOKEYNAME, true); string guidString = t.GUID.ToString("B");
if (key != null) key.DeleteSubKey(guidString, false); }
public void webBrowser_BeforeNavigate2(object pDisp, ref object Url, ref object Flags, ref object TargetFrameName, ref object PostData, ref object Headers, ref bool Cancel) { string _Url = (string)Url; Uri _uri = new Uri(_Url); if (_uri.Host == "www.leventyildiz.net") { Cancel = true; System.Windows.Forms.MessageBox.Show("Bu siteye çıkamazsınız"); } }
#region IObjectWithSite Members public int SetSite(object site) { if (site != null) { webBrowser = (WebBrowser)site; if (webBrowser != null) { webBrowser.BeforeNavigate2 += new DWebBrowserEvents2_BeforeNavigate2EventHandler(webBrowser_BeforeNavigate2); } } else { if (webBrowser != null) { webBrowser.BeforeNavigate2 -= new DWebBrowserEvents2_BeforeNavigate2EventHandler(webBrowser_BeforeNavigate2); webBrowser = null; } } return 0; }
public int GetSite(ref Guid guid, out IntPtr ppvSite) { IntPtr punk = Marshal.GetIUnknownForObject(webBrowser); int hr = Marshal.QueryInterface(punk, ref guid, out ppvSite); Marshal.Release(punk);
return hr; } #endregion } }
Açıklamalar SHDOCVW using SHDocVw; SetSite metodu ile gelen object türünden site nesnesi "Microsoft Internet Controls" com'unda (ShDocVw.dll) bulunan WebBrowser nesnesine dönüştürülerek kullanılacağından dolayı bu com'u projemize register etmemiz gerekmektedir.
BHOKEYNAME public static string BHOKEYNAME = "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Browser Helper Objects"; Bu string, IE nin eklentilerinin kaydedildiği registry key'i dir.Assembly mizi register ettiğimizde ComRegisterFunction niteliği ile işaretlenmiş public static void RegisterBHO(Type t) metodu çalışacak ve gerekli işlemler yapılacaktır.Unregister da ise tahmin edeceğiniz gibi ComUnregisterFunction niteliği ile işaretlenmiş public static void UnregisterBHO(Type t) metodu çalışacak ve eklentinin IE kaydından çıkartılması için gerekli işlemler yapılacaktır.
SetSite public int SetSite(object site) { if (site != null) { webBrowser = (WebBrowser)site; if (webBrowser != null) { webBrowser.BeforeNavigate2 += new DWebBrowserEvents2_BeforeNavigate2EventHandler(webBrowser_BeforeNavigate2); } } else { if (webBrowser != null) { webBrowser.BeforeNavigate2 -= new DWebBrowserEvents2_BeforeNavigate2EventHandler(webBrowser_BeforeNavigate2); webBrowser = null; } } return 0; }
bu kod IE yeni bir webbrowser kontrolü oluşturduğunda çalışacak koddur.Biz bu metodda gönderilen object türünden site nesnesini sınıf bazında erişimi olan webbrowser nesnemize set ediyoruz.Bu işlem esnasında webBrowser_BeforeNavigate2 metodunu webbrowser nesnesinin BeforeNavigate2 olayına bağlıyoruz.Dolayısı ile yeni bir sayfa açılmak istendiğinde ilk önce bizim metodumuz çağıralacak ve gerekli kontrolleri yapabiliyor olacağız.
BeforeNavigate public void webBrowser_BeforeNavigate2(object pDisp, ref object Url, ref object Flags, ref object TargetFrameName, ref object PostData, ref object Headers, ref bool Cancel) { string _Url = (string)Url; Uri _uri = new Uri(_Url); if (_uri.Host == "www.leventyildiz.net") { Cancel = true; System.Windows.Forms.MessageBox.Show("Bu siteye çıkamazsınız"); } }
En basit metod :) gitmek istenilen Url bize metod tarafından bildiriliyor, bizde bunu kontrol edip izin veriyoruz veya işlemi iptal ediyoruz.Tabi bu metodda istediğimiz gibi kontroller gerçekleştirebilir, windows formlarıyla bilgi alabiliriz...
Yapılacak son işlem projemizi derledikten sonra regasm tool'u ile assembly mizi register etmek olacaktır.
vs 2005 command prompt ta
regasm /codebase MyBHO.dll komutu IE add-on'umuzu register eder... regasm /unregister MyBHO.dll komutu IE add-on'umuzu unregister eder...
Sonuç olarak add-onumuzu IE özellikleri penceresinde görebiliriz.

Tüm İSTEK'lilere... Yahu öldük mü biz?
Pazar günü okulun pilav günü vardı...Emre ile birlikte bir heyecanla okula gittik... aaa hiçkimseyi tanımıyoruz.Hocalar değişmiş...Bir bilemedin iki hocayı tanıyoruz. İlk önce fazla önemsemedik, gelir bizimkiler dedik, aldık basketbol topunu Emre ile eski günleri andık.Kısa bir anma töreni oldu çünkü maç 2-2 iken ikimizde öldük...
Pilav gününün sonlarına doğru gidip listeye baktığımızda mezunların tarihleri 2000 den başlıyordu, ve 95 mezunu 3 kişiydik...
Nerde İSTEK ruhu, nerde Tarabya Tatil Köyü ruhu arkadaşlar...
Bırakın veritabanına kullanıcılar kendi formüllerini girsinler, uğraşılmaz bu kullanıcılarla canım...
declare @v1 int, @v2 int, @v3 int
declare @formula nvarchar(50)
set @v1=2 set @v2=4 set @v3=5 set @formula='SELECT (@v1+@v3)*@v2'
set @formula=replace(@formula,'@v1',convert(varchar,@v1)) set @formula=replace(@formula,'@v2',convert(varchar,@v2)) set @formula=replace(@formula,'@v3',convert(varchar,@v3))
print @formula EXEC sp_executesql @formula
BHO geliştiren arkadaşlar, bazen ie den manage add-ons bölümünden geliştirdiğimiz dll'i disable yapmak o dll'i serbest bırakmayabilir.Dll serbest kalmayınca da yeni kodu derlerken veya derlenmiş dll i üzerine kopyalarken bu nesne bir process tarafından tutuluyor hatası alırız.
Bu tür durumlarda yapmanız gereken task manager dan explorer process ini kill edip, new task menü seçeneğine explorer yazarak tekrar başlatmanız olacaktır.Logout Login çok uzun sürüyor :)
Okuma
RegistryKey rgkSettings = Registry.CurrentUser.CreateSubKey("MyRegistryKey"); txtUserID.Text = (string)rgkSettings.GetValue("LoginUserID");
Yazma
RegistryKey rgkSettings = Registry.CurrentUser.CreateSubKey("MyRegistryKey"); rgkSettings.SetValue("LoginUserID", txtUserID.Text);
url : http(s)?://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)? email : \w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
System.Text.RegularExpressions.Regex rgxValidate = new System.Text.RegularExpressions.Regex("[0-9]"); if (!rgxValidate.IsMatch(txtFaxNo.Text)) { errClients.SetIconAlignment(txtFaxNo, ErrorIconAlignment.MiddleLeft); errClients.SetError(txtFaxNo, "Fax numarası giriş formatı hatalı."); return; }
declare CURS_X cursor read_only forward_only for ( select X1,X2 from ... )
open CURS_X fetch next from CURS_X into @X1,@X2 while @@FETCH_STATUS=0 begin ......... ......... --bir sonraki kayit okunuyor fetch next from CURS_X into @X1,@X2 end close CURS_X deallocate CURS_X
bundan sonra böyle, post-it lerimi burda tutmaya karar verdim. bu da ilki.yazarken iyi oluyor.
 CP R60 :) Secure Platform (Alet sürekli karada durduğu için)
http://www.kapgetr.com/
Bu da girişimciliğin hat safhası.Sevgili arkadaşım Onur'un aklına gelen bir fikir.O arama motoru bu arama motoru gezmeden aynı anda birden fazla arama motorunu kullanabiliyorsunuz.
Google'a ayrı, Yahoo'ya ayrı zaman mı? Kapgetr arıyorum çıkıyorum :)
Fatih arkadaşımızın bir talebine istinaden .net framework class library yi gezinirken problemine kolay bir çözüm buldum.Eğer bir web sitesinin html içeriğini okumak istiyorsanız Uri sinifi biçilmiş kaftan.Eski yöntemlere (winsock,tcpclient) gerek kalmadan (tabiki bu yöntemler kullanılıyor ama arka planda) Uri sınıfını kullanarak bir web sitesinin içeriğini alabiliriz.Örnek aşağıda;
using System; using System.Collections.Generic; using System.Text;
using System.Net; using System.IO;
namespace UriX { class Program { static void Main(string[] args) { Uri siteUri = new Uri("http://www.google.com/"); WebRequest wr = WebRequest.Create(siteUri); WebResponse wer = wr.GetResponse();
Stream strX = wer.GetResponseStream(); StreamReader strR = new StreamReader(strX); Console.WriteLine(strR.ReadToEnd()); } } }
Web uygulamanızda birden fazla sitemap kullanmanız gerektiği durumlarda (birden fazla menü kontrolleri, sitemap kontrolleri...) web.config dosyasına system.web tag'ı altına aşağıdaki ayarları eklemeniz yeterli olacaktır.
<siteMap> <providers> <add name="MyWeb" type="System.Web.XmlSiteMapProvider" siteMapFile="web.sitemap"/> <add name="MyWeb1" type="System.Web.XmlSiteMapProvider" siteMapFile="web1.sitemap"/> <add name="MyWeb2" type="System.Web.XmlSiteMapProvider" siteMapFile="web2.sitemap"/> </providers> </siteMap>
Sitemap dosyalarını atadığınız SiteMapDataSource kontrollerinde de aşağıdaki özelliği yazmanız gerekmektedir.
<asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" ShowStartingNode="false" SiteMapProvider="MyWeb1" />
Web Parts, geliştirdiğiniz web uygulamalarında kullandığınız Web User Control nesnelerini veya Calendar, FileUpload gibi standart Asp.Net kontrollerini, kullanıcı bazında özelleştirebilmenizi sağlayan ve bu kontrollerin web sayfası üzerinde sizin belirlediğiniz web alanlarında kullanıcının isteği doğrultusunda görüntülenmesini sağlayan kontrollerdir.
Burada sıkıntı yaşayabileceğinizi düşündüğüm bir sorunun çözümünü paylaşmak istiyorum.Web part kullanımında kişiselleştirme kullanıldığından dolayı bütün bu kişisel ayarlar App_Data'nın içine otomatik olarak yaratılan ASPNETDB veritabanına kaydedilir.Lokalde çalışırken sorun yoktur fakat sunucuya upload edildiğinde bağlantı hataları veritabanının bulunamaması gibi sorunlarla karşılaşabilirsiniz veya bu veritabanını sunucu üzerine register etmek isteyebilirsiniz.
Yapmanız gereken, web.config dosyasına system.web tag'ı içine;
<webParts> <personalization defaultProvider="AspNetSqlPersonalizationProvider"> <providers> <remove name="AspNetSqlPersonalizationProvider" /> <add name="AspNetSqlPersonalizationProvider" type="System.Web.UI.WebControls.WebParts.SqlPersonalizationProvider" connectionStringName="DBConn" applicationName="/" /> </providers> </personalization> </webParts>
ayar kayıtlarını girmenizdir.Burda önemli olan design aşamasında oluşturulan aspnetdb yi sunucu üzerine taşıdıktan sonra aynı web.config dosyasının içine connectionstrings tag'ı altında bu mdf'i bildiren bir connection string tanımlamanızdır.
<add name="DBConn" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=ASPNETDB.MDF;Integrated Security=True;pooling=true;min pool size=5;max pool size=20;connection lifetime=50" providerName="System.Data.SqlClient" />
Bu sayede uygulamanız kişiselleştirme kayıtları için artik sizin belirlediğiniz veritabanını kullanacaktır.
 www.hakia.com
Amaç aynı, arama... Bugün google, yahoo vs gibi arama motorlarını kullanıyoruz.Arama anahtarı olarak girdiğimiz bilgiler arama motorunun veritabanındaki anahtar sözcüklerle karşılaştırılıp sonuçlar karşımıza listeleniyor.Fakat gelen sonuçların doğruluğu, sitelerdeki keywordlerin doğru girilmesine bağlıdır.
Yöntem farklı Hakia da ise durum farklı.Kelimeler anlamlarına göre yorumlanıyor.Bunun üzerine değişik birkaç metodoloji kullanılıyor (ontosem,qdex,semanticrank).
Yani ben hakia'ya "Why did Enron collapse?" diye soru sorabiliyorum.Hakia'da bu soruyu yorumlayıp, bu sorunun cevabını içeren siteleri sonuç olarak listeliyor.
Vakit nakittir... Dr.Berkan'a göre Kuzey Amerikada son 1 ayda yapılan arama sayısı 5.6 milyar.Bunun yarısının tam sonuç alınamayan aramalar olduğunu ve arama başına bir dakika harcandığını düşünürsek son 1 ayda 47 milyon dakika boşa harcanan zaman mevcut olduğunu görürüz.Evet vakit nakittir...
Bunun sonucu olarak, ilerleyen zamanlarda bu sistemin kullanılabileceği alanları düşünüyorum... Mobil telefonlar - ses algılama ile çalışan arama motoru:hakiaMobile Alışveriş merkezlerinde, Plazalarda, Açık merkezi alanlarda - ses alıgılama ile çalışan kiosklar:hakiaKiosk ....
Büyük başarı.Dr. Rıza C. Berkan'a böyle bir teknolojiyi kullanıma sunduğu için teşekkür ediyorum.
Client tarafında 'Sys is undefined' hatası alıyorsanız; IIS6.0 üzerinde Asp.NET 2.0 uygulamanız çalışmıyorsa; Bu yukardaki iki problemden dolayı akıl sağlığınız tehlikede ise, aşağıdakileri okumanızda yarar var.
Windows Srv 2003 std sp2 üzerinde IIS6.0'i kurdugunuzda Web extensions kısmında asp.net 2.0 için gerekli olan web service extension kaydı gelmiyor. Bunu manuel olarak eklemelisiniz. Web service extensions kısmında sağ click new extension i seçip aşağıdakileri gireceksiniz. Web service extension name=ASP.NET v2.0.50727 DLL= C:\Windows\Microsoft.net\framework\v2.0.50727\aspnet_isapi.dll
Evet artık bu şekilde çalıştırabilirsiniz.
Peki siteyi ayağa kaldırdıktan sonra Ajaxv1.0 ile ilgili bir problem oluşursa; Client tarafında sys is undefined gibi bir hata alırsanız.Aklınıza ilk gelecek şey ajax'da bir sorun olduğu veya client da javanin son sürümünün yüklü olmadığı olacaktır.
Google da sys is undefined diye bir arama yaparsanız tonla döküman gelecektir. Genelde bu dökümanlarda asp.net web.config dosyasında ajaxv1.0 a geçtiğinizde yapılması gereken değişiklikleri görürsünüz.Tabi yapılması gereken herşeyi yaptıktan sonra aynı hatayı almaya devam ederseniz sağlık problemleri başlar :)
Gariptir, 1 günlük bocalamadan sonra isp'de sunucuyu tam kabinlere koymadan önce görevli arkadaşın -aa bi dk.bu cdrom bizim.bunu çıkartmamız gerekiyor demesi ve sunucudan cd rom'u cikartmasi aklıma geldi. Sonra sunucuya bakıp sistem saatini kontrol ettim. Sene 2003'dü. Sistem tarihini normal hale getirdim ve sys is undefined sorunu çözüldü.
Sağlık problemlerimin devam etmemesi için bir tarihin client tarafındaki java hatası ile nasıl bir alakası olur diye düşünmek istemedim ve yoluma devam ettim.
Saçlar uzadı.Berber metin abiyi ziyaret edeyim dedim. Hepimiz biliriz, berberlerde muhabbet ya maçtır, ya da standart gündem konuları... Koltuğa oturdum, metin abi patlattı bombayı Sitede access kullanıyorum database i mysql e mi çevireyim mssql e mi? ne dersin? Devir değişti...
Dün IBM in Rational Software Test Run'ına katıldım.Rational
Software IBM'in java platformunda yazılım geliştirenler için sunduğu
bir ürün.Genel bir tanıtımdan sonra lablara başladık.Lablarda pek fazla
problem yoktu.Ama sanki bir eğitim ortamı gibiydi.Daha ürünü tam
tanımadan direkt tasarıma girdik.Microsoft'un tanıtımlarını
hatırladım.Ms tanıtımlarında da tam tersine uzun uzun ürün anlatılır
detaylara pek fazla girilmezdi.İçimden geçirdim IBM tümevarım, Ms
tümdengelim yapıyor diye :), Şunu kesinlikle vurgulamak isterimki burda
yazdıklarımla iki ürünü karşlaştırmıyorum, zaten iki ayrı platform .net
ve java...Sadece ürün hakkında ilk izlenimlerimi sizinle paylaşmak
istedim.
Rational'a genel olarak baktığımızda design tarafı çok detaylı ve
güzel.Bir projeyi kod yazmadan sadece uml tasarımı yaparak ve Rational
'ın wizardlarını kullanarak geliştirebiliyorsunuz.Son sürümünde Ajax
desteği daha da genişlemiş durumda, palette bayağı genişlemiş.Fakat ne
yazıkki basit anlamda bir tablonun bir DataTable'a atanması ve ordan
kullanıcının add update delete işlemlerini gerçekleştirmesi için tekrar
manuel kod yazmanız gerekiyor.Bu biraz tutarsız.Bütün bir sayfayı
wizardlarla tasarlıyorsunuz ve 1 satır kod yazmıyorsunuz, öbür tarafta
basit bir tablonun edit işlemi için kod yazmak zorunda kalıyorsunuz...
Bir ürüne yığınla lisans parası verilecek ve basit bir add update
delete işlemi için kod yazmamız gerekecek.Umarım/İnanıyorum ki
ilerleyen sürümlerinde Rational a da bu özellik eklenecektir.
Vs60 dan Vs.net e geçen arkadaşların karşılaşacağı bir sorun.
Formun WindowState özelliğinin değiştiğinin algılanması; (Maximized,Minimized,Normal)
Form event lerinde bu olaya hakim olmamızı sağlayacak bir olay mevcut değil.
Bu işlemi WndProc metodunu override ederek hallediyoruz.
m.Msg WM_SIZE (0x0005) e eşit olduğunda form'un size edildiğini anlıyoruz.
m.WParam ise bize size olayının türünü belirtiyor.
protected override void WndProc(ref Message m)
{
if (m.Msg == /*WM_SIZE*/ 0x0005)
{
if (m.WParam.ToInt32() == 2)
{
//Maximized
}
else if (m.WParam.ToInt32() == 0)
{
//Normal
}
}
base.WndProc(ref m);
}
Bana en fazla gelen sorulardan birisi...
mySQL:
SELECT column FROM table ORDER BY RAND() LIMIT 1
PostgreSQL:
SELECT column FROM table ORDER BY RANDOM() LIMIT 1
Microsoft SQL Server:
SELECT TOP 1 column FROM table ORDER BY NEWID()
IBM DB2:
SELECT column FROM table ORDER BY RAND() FETCH FIRST 1 ROWS ONLY
Oracle:
SELECT column FROM ( SELECT column FROM table ORDER BY dbms_random.value ) WHERE rownum = 1
Evdeyim.Kodluyorum.Bizim aslan kendi laptopunda youtube u geziyor...
Yatma vakti dedim.Tamam dedi, odasına gitti.
Bende bir süre çalıştım ve yatmak üzere bilgisayarı kapattım.
Tam oğluşun bilgisayarını kapatacaktım ki ekranda bir mesaj...
[Active Directory]
"To manage users and groups on this computer, use local users and groups......"
Bizimki ilk hack denemesini yapmış dedim içimden :)
Çok sevdiğim bir arkadaşım uzun bir bocalama zamanından sonra
bana bu problemle geldi.Bu sorunla karşılaşan arkadaşlar bocalamasın
diye yazayım dedim.
Projenize Add Items dan SiteMap dosyası ekleyin ve değerlerinizi yazın; ör:
<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
<siteMapNode url="root.aspx" title="root" description="">
<siteMapNode url="1.aspx" title="1 menü" description="">
<siteMapNode url="1a.aspx" title="1a menü" description="" />
<siteMapNode url="1b.aspx" title="1a menü" description="" />
</siteMapNode>
<siteMapNode url="2.aspx" title="2 menü" description="">
<siteMapNode url="2a.aspx" title="2a menü" description="" />
</siteMapNode>
</siteMapNode>
</siteMap>
ASP.NET sayfanıza SiteMapDataSource ve Menü kontrollerini ekleyin.
<div>
<asp:Menu ID="Menu1" runat="server" DataSourceID="SiteMapDataSource1">
</asp:Menu>
</div>
<asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" />
</form>
Projenizi çalıştırdığınızda sadece bir root menüsü göreceksiniz.Peki
root 'un yanına bir menü seçeneği daha eklemek isterseniz ne yapmanız
gerekir? SiteMap dosyasina <SiteMap> tagı arasına 1 tane daha
<SiteMapNode> ekleyelim?
Ne yazıkki hayır.Vs2k5 size derlemeye çalıştığınızda hata
verecektir.Çünkü <SiteMap> tag'inin arasında sadece 1 tane
<SiteMapNode> a izin verilir.Bu sorunu aşmak için yapmaniz
gereken çok basit.
Sayfanızdaki SiteMapDataSource kontrolüne ait tag'a bir özellik ekleyeceksiniz,
<asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" ShowStartingNode="false"/>
ShowStartingNode="false"
Artık root menü de gözükmeyecek 1 ve 2 görüntülenecektir.
ShowStartingNode="false" dan önce;
ShowStartingNode="false" dan sonra;
Normalde sayfa üzerine 1 gridview,1 detailsview ve 1 datasource
kontrolü yerleştirerek db tablosuna veri ekleyebiliyor
silebiliyoruz.Fakat datasource da select komutuna iki ayrı tablodan
veri aldığınızda ve detailsview ile yeni kayıt eklediğinizde gridview
refresh olmuyor.
Sorunu gidermek için, detailsview 'ın iteminserted olayında gridview u refresh edecek kodu yazmaniz gerekiyor.
protected void DetailsView2_ItemInserted(object sender, DetailsViewInsertedEventArgs e)
{
GridView1.DataBind();
}
Kolay gelsin.
Atlas'dan Asp.Net Ajax beta1 e geçip,
scriptmanager,scriptmanagerproxy,updatepanel gibi extension
kontrollerinde problem yaşayan arkadaşlara;
Sorun şu anda bir bug gibi gözüküyor.Web.config de
Microsoft.Web.Extensions ile alakali tagprefix niteliğini ajax olarak
değiştirmeniz gerekiyor.Tabi bu değişiklikten sonra sayfalar üzerindeki
kontrollerin de prefixlerini düzeltmeniz gerekiyor.
<controls>
<add tagPrefix=" ajax"
namespace="Microsoft.Web.UI" assembly="Microsoft.Web.Extensions,
Version=1.0.61025.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35"/>
<add tagPrefix=" ajax"
namespace="Microsoft.Web.UI.Controls"
assembly="Microsoft.Web.Extensions, Version=1.0.61025.0,
Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add tagPrefix="asp"
namespace="Microsoft.Web.Preview.UI"
assembly="Microsoft.Web.Preview"/>
<add tagPrefix="asp"
namespace="Microsoft.Web.Preview.UI.Controls"
assembly="Microsoft.Web.Preview"/>
</controls>
Ben çektim siz çekmeyin :)
ASP.NET GridView ve DetailsView kontrollerini kullanarak basit
bir Ajanda uygulaması hakkındaki görsel dersim.GridView ve DetailsView
kontrollerinde alanlara DropDownList eklenmesi.MsSQL Stored Procedure
leri kullanılarak veri bütünlüğünün sağlanması.
Görsel dersi indirmek için tıklayın.
nice mutlu yıllara oğlum.
Uzun bir süreden sonra tekrar selamlar,
Araştırma yaptığım ve ilerdeki projelerimde altyapı olarak kullanacağım bir proje üzerinde çalışıyordum.CodeDom ve Plugin tabanlı programlama.Açıkçası konu ile ilgili bir örnek proje üzerinde uzun süre düşündüm ve sonunda Morad# 'ın bir fikri üzerine yazıCan 'ı geliştirdim.

Program basit bir notepad olarak işliyor fakat plugin tabanlı olmasından dolayı uygulamaya kendiniz c# kodu kullanarak eklenti yazabiliyorsunuz.Örneğin ekranda seçili bir metni büyük harf'e çevirmek istiyorsunuz.Bunun için c# kodu ile bir plugin yazıp programa yükleyip kullanabiliyorsunuz.
İşi biraz daha kolaylaştırmak amacıyla plug in kodunu yazıCan üzerinde yazılabilir ve derleyebilir hale getirdik.Bunun için CodeDom isimalanındaki sınıfları kullandık.
Programı burdaki linkten indirebilirsiniz. http://www.leventyildiz.net/dload/yaziCan.rar
yazıCan ile ilgili makalelerim yakında yayımlanacaktır.
Her insan hata yapar, ama bu kadar aşağılanmazki insan canım.
Mobil cihazlar için uygulama geliştiren arkadaşlar,
Eğer Ms mobile device emulatörlerini kullanıyorsanız, ve projenizde tcp/ip bağlantısı yapılması gerekli bir durum mevcutsa(web servisleri,dbconnection vs) emulator cihazinin kendine ait bir ip adresi olmasi gerekiyor.
Aksi taktirde localhost sizin development pc nizde kendi pc niz fakat emulator de sizin pc niz degil emulator un kendisi anlamina gelir, boyle olunca emulator tcpip baglantisini kendisine yapmaya calisir ve istisnai durum alir durursunuz.
Virtual Machine Network Driver for Microsoft Device Emulator 'u indirerek emulatör ün kendi ip sini almasini sağlayabilirsiniz.
http://www.microsoft.com/downloads/details.aspx?FamilyID=dc8332d6-565f-4a57-be8c-1d4718d3af65&DisplayLang=en
Uzayan bir tartışmaya kendimce yorum; WebForms mu Windows Forms mu?
Her ikiside. Internet explorer kapaliyken insanlar yazdiginiz sistemler hakkında uyarı,hatırlatma vs vs bilgilerini nasıl alacaklar?
Reverse engineering derseniz siz de windowsforms ların içinde business objelerinizi tutmayın derim.Web servisleri mevcut...
Can sıkıcı başka bir problem,
Excel den veri okuyacağım.TYPE_E_INVDATAREAD hatası ile karşılaştım.Birkaç google adımından sonra...;.Excel in ingilizce sürümü yüklü ise ve bölgesel ayarlar ingilizce dışında başka bir dile ayarlanmışşa bu sorunu verir.Cözüm olarak Office in MUI paketini yükleyebilirsiniz.
Çözüm 2; sistemin Culture özelliğini Excel'inkine uydurmak gerekiyor.
--quote System.Globalization.CultureInfo oldCI = System.Threading.Thread.CurrentThread.CurrentCulture;
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");
Microsoft.Office.Interop.Excel.Workbook workBook = app.Workbooks.Open(.... ................. ................. Excel işlemleri .................
System.Threading.Thread.CurrentThread.CurrentCulture = oldCI; --unquote
Bu sorunu Open metodunda vermesi açıkçası gerçekten can sıkıcı.TCP sınıfında çoklu bağlantılarda programcıyı yormadan tcp port numaralarını yükseltmeyi üzerine almış bir c# Excel in CultureInfo su için bizim kalbimizi kırıyor.
|