ASP.NET DropDownList Doldurma işlemini bir xml den datasete veri aktararak anlatmaya çalışacağım. App_Data klasörü altında bulunan firmaList.xml dosyasındaki firma isimlerini dropdown liste dolduruyor olacağız. DropdownList imizin adı : ddlSirketler
.cs
DataSet dsSirketler = new DataSet();
dsSirketler.ReadXml(HttpContext.Current.Server.MapPath(“~/App_Data/firmaList.xml”));
ddlSirketler.DataSource = dsSirketler.Tables[0];
cbxSirketler.DataTextField = “text”;
cbxSirketler.DataValueField = “value”;
xml dosyamız
<?xml version=”1.0″ encoding=”utf-8″ ?>
<firmalar>
<firma>
<text>Firma 1</text>
<value>firma1</value>
</firma>
<firma>
<text>Firma 2</text>
<value>firma2</value>
</firma>
</firmalar>
asp.net ajax uygulamanızda CalendarExtender ile ilgili konum problemi yaşıyorsanız , CalendarExtender ile textbox nesnenizi aynı div içerisine alarak bu problemi ordatan kaldırabilirsiniz.
<div id=”takvim” runat=”server” style=”position:relative;” >
| <asp:TextBox ID=”txtTarih” runat=”server” /> |
<ajaxToolkit:Calendar runat=”server”
TargetControlID=”txtTarih”
Format=”dd.MM.yyyy”
/>
</div>
asp.net uygulamanız içinde ki dropdownlistinize yeni bir eleman (option) eklemek istediğinizde , bunu window.open() ile açacağınız yeni bir pencere ile gerçekleştirmek istiyorsanız , açılan pencerede kaydet butonuna close_form() adında bir javascript fonksiyonu ile eşleştirip bu fonksiyon içierisine aşağıdaki kod blogunu yazarak ana sayfadaki drıpdownlist nesnesine erişerek ekleme işlemini gerçekleştirebilirsiniz.
<script>
function close_form()
{
try {
var opt = new window.opener.document.createElement(“option”);
window.opener.document.getElementById(‘dropdownlist_subeler’).options.add(opt);
opt.text = document.getElementById(‘txt_subeler’).value;
opt.value = document.getElementById(‘txt_subeler’).value; window.close();
}
catch(err)
{
alert(err);
}
}
</script>
Web servisler üzerinde çalışırken , aldığım bir hatanın nerede olduğunu gözlemlemek için debug mode da projeyi açmak istediğimde karşıma çıkan hata mesajı ile aşağıdaki gibi
“Unable to start debugging on the web server. Debugging failed because integrated Windows authentication is not enabled. Please see Help for assistance”
Çözümü :
1. IIS(Internet Information Server)’i açın
2. Web Site’a sağ tıklayın ve Properties(Özellikler)sekmesini seçin
3. Directory Security(Dizin Güvenliği) sekmesini seçin ve “Anonymous access and
authentication control” ü seçin
4. Açılan pencerede “Enable Anonymous access” checkbox’ının tik’ini kaldırın ve
“Integrated Windows Authentication” checkbox’ını tik’lyin.
4 . adımı yaptıktan sonra da baktım ki debug ta sorun yok ama bu seferde servisi kullanan uygulama erişemiyor. bu yüzden 4. adımda “Enable Anonymous access” ifadesininde seçili olmasını sağlayın.
Merhaba Arkadaşlar,
Bazı durumdalarda session nesnesinde bilgiler taşıyoruz. Benim en sık yaptığım ise login olan kullanıcı bilgilerini sessionda tutmak ve uygulama süresince login olup olmadığını ve yetkili sayfalarını buradan kontrol ediyorum. Hal böyle olunca sayfalarımın init kısmında session nesnesine ihtiyaç duyuyorum. Ben sayfaların init kısmında session nesnesine erişmek istediğimde VS 2010 ‘un design view kısmı kontrolü render edemediği ile ilgili hata veriyor. Bu konu ile ilgili çözümü aşağıda bulabilirsiniz.

Sayfanın init anında Sessiondan bilgi almaya kalkarsanız eğer aşağıda görüldüğü gibi,
Design View a geçtiğinizde “ Error Creating Control – <ControlName>
Session state can only be used when enableSessionState is set to true, either in a configuration file or in the Page directive. Please also make sure that System. Web.SessionStateModule or a custom session state module is included in the <configuration>\<system.web>\<httpModules> section in the application configuration.” Hata sı ile karşılaşa bilirsiniz. Fakat bu hata sadece Design View a geçtiğinizde karşınıza çıkacaktır. Yani uygulamanızın çalışmasını etkiletecek bir hata değildir.
Bu hata çözüm olarakda şunu yapabiliriz. session nesnesinin ve context in null olup olmadığını kontrol edersek eğer design view sorunsuz bir şekilde aktif hale gelecektir.
Bana yardımı olan ve çözümü bulduğum yere buradan ulaşabilirsiniz.
Bol kodlu günler
Merhabalar,
Uygulama geliştirirken kendinize ait basecontroller yazmışsınızdır ve hangi sayfada kullanacaksınız mutlaka sayfa bu kontrolleri register etmeniz gerekir. Yada AjaxControlToolKit’i kullanıyorsunuzdur ve yine hangi sayfa kullanacak iseniz yine bu dll i sayfada register etmeniz gerekir. Tabi bu tanımlamayı web.config üzerinde yapmamış iseniz. Her sayfada register etmek yerine web.config te Pages nod ‘unda bir kere register eder iseniz uygulamanıza eklediğiniz her sayfada artık ekli olarak gelecektir. Bunun için web.configte aşağıdaki düzeltmeyi yapmanız gerekmektedir.
<compilation debug=”true” strict=”false” explicit=”true”>
<assemblies> ... <add assembly="AjaxControlToolkit"/> </assemblies> </compilation> <pages>... <controls> <add assembly="AjaxControlToolkit" namespace="AjaxControlToolkit" tagPrefix="cc1" /> � </controls> </pages>
Bol kodlu günler
Selamlar,
Bu aralar msdn forumuna vakit ayırıp orada cevap vermeye çalışıyorum. İlginç bir soru ile karşılaştım.
Updatepanel içerisinde kullanılan kontroller full postback yapıyor diye yazıyordu.
Biraz inceledikten sonra ve kendim bir yaptığımda gerçekten full postback yaptığını gördüm.
Google olmasa idi ne yapardık
Arama ile bir kaç örneğe raslatım. Çoğu kişi aynı dertten muzdaripmiş
meğersem. Ama onlardaki çözüm kolay olmuş repeater içerisinde kullandıkları
linkbuttonlara id vererek çözüme ulaşmışlar.

Benim örneğimde ise linkbuttonların zaten idleri vardı. Aklıma repeater bind
ettikten sonra scriptmanagera kontrolleri tek tek RegisterAsyncPostBackControl metodunu
kullanarak register ettim ve sorun çözüldü. Aşağıda bunla ilgili örneğin kod kısımlarını bulabilirsiniz.
<asp:ToolkitScriptManager ID=”ToolkitScriptManager1″ runat=”server”>
</asp:ToolkitScriptManager>
<asp:UpdatePanel runat=”server” ID=”pnlUpdate” ChildrenAsTriggers=”true”>
<ContentTemplate>
<asp:Repeater ID=”rpt” runat=”server”>
<ItemTemplate>
<table>
<tr>
<td>
<%#Eval(“Ad”) %>
</td>
<td>
<asp:LinkButton ID=”btnDelete” runat=”server” CommandName=”Delete” Text=”Kaldır” />
</td>
</tr>
</table>
<asp:ConfirmButtonExtender ID=”cnfrmButtonDelete” runat=”server” DisplayModalPopupID=”mdlPopupDelete”
ConfirmText=”Silmek istediğinize emin misiniz?” Enabled=”true” TargetControlID=”btnDelete”>
</asp:ConfirmButtonExtender>
<asp:ModalPopupExtender ID=”mdlPopupDelete” runat=”server” Enabled=”true” TargetControlID=”btnDelete”
OkControlID=”btnYesDelete” CancelControlID=”btnNoDelete” PopupControlID=”divPopupDelete”>
</asp:ModalPopupExtender>
<asp:Panel ID=”divPopupDelete” runat=”server” CssClass=”mdlPopupContainer”>
Silmek istediğinize emin misiniz?
<asp:LinkButton ID=”btnYesDelete” runat=”server” Text=”Evet” />
<asp:LinkButton ID=”btnNoDelete” runat=”server” Text=”Kapat” />
</asp:Panel>
</ItemTemplate>
</asp:Repeater>
</ContentTemplate>
</asp:UpdatePanel>
Yukarıda sayfanın içerisinde yer alan bir updatepanel içerisindeki repeater ve onun içerisinde duran diğer kontrollerimiz var.
btnDelete basıldığında kontrol amaçlı olarak confirmbuttonextender kullanıldığını göreceksiniz.
Arakda tarafta yaptığımız işlemde aşağıdaki gibidir.
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindRep();
}
}
private void BindRep()
{
List<Person> list = new List<Person>();
for (int i = 0; i < 29; i++)
{
list.Add(new Person() { Ad = (i + ” ” + (i * 5)) });
}
rpt.DataSource = list;
rpt.DataBind();
foreach (RepeaterItem ri in rpt.Items)
{
if (ri.ItemType == ListItemType.Item || ri.ItemType == ListItemType.AlternatingItem)
{
LinkButton lb = (LinkButton)ri.FindControl(“btnDelete”);
ToolkitScriptManager1.RegisterAsyncPostBackControl(lb);
}
}
}
}
public class Person
{
public string Ad { get; set; }
}
Umarım işinizi görür.
Bol Kodlu Günlere
Web ortamındaki gelişmeleri üç safhada inceleyebiliriz:
- Belge Web’i (Document Web) : Web’in en ilkel halidir. Bu web türünde bilgi sadece okunabiliyordu,bilgi üzerinde değişiklik yapmak mümkün değildi.yani HTTP protokolü ile HTML dilinde biçimlendirilmiş statik belgelerin kullanıcılara sunuluyordu.
- Uygulama Web’i (Application Web) :dinamik HTML belgeleri ile kullanıcı ve iş uygulaması arasında etkileşim sağlandı.Bilgi üzerinde okuma ve bilgi yazma imkanı verdi.
- Servis Web’i (Services Web) : İşletmelerin diğer işletmelerle olan iş süreçlerini bütünleştirme gereksinimi sonucunda ortaya çıkan ve gelişmekte olan yeni yapıdır. Bu yapının temel taşı web servisleridir.
Web servisleri Nedir?
W3C (World Wide Web Consortium) tarafından yapılan resmi tanımıyla web servisi, bilgisayarlar arasında ağ üzerinden etkileşimi ve uyumluluğu sağlayacak yazılım sistemidir.Web servisleri programların etkileşimi sağlamaktadır.Web servisleri sayesinde farklı veri tabanındaki bilgiler çekilebilir.
Web servisler içinde metodlar barındırır ve client bir istekte bulunduğunda bu metodlar ile client isteğine yanıt vermiş olur.
Web servislerinin en büyük avantajı:Web servislerinin en büyük avantajı Xml (extensible Markup Language-genişletilebilir etiketleme dili) tabanlı olmasıdır.Xml, kişilerin kendi etiketlerini tanımlayarak bu etiketler ile hiyerarşik yapı kurabildikleri ,bunları istedikleri zaman değiştirebildikleri ; esnek, teknolojiden -platformdan bağımsız text tabanlı bir meta dilidir.Xml tabanlı olması beraberinde platform bağımsız olmayı da getirir.
Platformdan bağımsız derken ne kastettiğimi biraz daha açmak istiyorum:Günümüz teknolojisi o kadar zenginleşti ve çeşitlendi ki…..Farklı farklı işletim sistemleri,programlar… Bunlar bir yana bir programın bile birden çok farklı versiyonu var. Bu kadar çeşitliliğin olması şüphesiz yanında uyum problemlerini getirecektir.Bir dosyayı aynı programın farklı versiyonlarında çalıştırmak istediğimizde bile zaman zaman problem yaşamaktayız,kaldı ki farklı program ve işletim sistemlerinde yaşanmasın.Bütün teknolojilerde ortak olarak açılan ve çalışan tek dosya türü text dosyalarıdır(notepad).Ama notepad ile en basitinden bir tablo oluşturup bunun üzerinde çalışmak istediğimizde bile bu tabloyu organize etmek baya bir zor olacaktır:kolonların sırası kayabilir,karışabilir….Bunun yerine tablolarımızı hiyerarşik yapı ile xmle atmak işimizi bayağı bir kolaylaştıracaktır.Xml verinin hızlı bir şekilde sogulanmasını,değiştirilmesini,transfer edilmesini,verinin içerik bilgisi ile saklanmasını(bu noktada htmlden ayrılır) sağlar.Xmlin güzel yanlarından birtanesi de uluslararası bir standarttır ve evrensel bir formattır ve firewallara takılmaz(text tabanlı olmasından kaynaklı).
Web Servisinin İşleyişi :
1. Eğer kullanılacak XML Web Servisinin adresi bilinmiyorsa bir UDDI dizini yardımı ile bir XML Web Servisi bulunur.
2. Discovery dosyasına (.disco) yapılan istek ile web servisinin tanımlama dosyasına yönelinir.
3. Web Servisinin açıklama dosyası olan WSDL dosyasına istek yapılır. Servis biçimi öğrenilir.
4. Artık XML Web Servisinin metodları çalıştırılmaya hazır olarak istemcinin hizmetindedir. XML Web servisinin metodları çalıştırılır.
Web Servis Kullanımı:Web Servisi(metodları) yazıldıktan sonra proje referans olarak eklenir.Referans olarak ekledikten sonra web servis metodlarına projeden erişilip metodlar kullanılabilir.Küçük bir örnek ile web metodun nasıl göründüğü ile fikir edinmek gerekirse:
public class Service1 : System.Web.Services.WebService
{
[WebMethod]
public int Toplam(int a, int b)
{
return a+b;web
}
[WebMethod]
public int Cikarma(int a, int b)
{
return a – b;
}
.
.
.
Web servis çalıştırılınca şekildeki gibi görünür.

Web servis kullanmak için eklenmesi gereken kod parçası,
localhost.Service1 ws = new localhost.Service1();
Metodlar da şu şekilde kullanılır:
label1.Text = ws.Toplam(a, b).ToString();
Web servis eklendikten sonra şu şekilde görünür:
Web Servisi = SOAP + WSDL + UDDI
SOAP(Simple Object Access Protocol): SOAP distributed (dağıtık) uygulamalarda ve web servislerinin haberleşmesinde kullanılmak üzere tasarlanan, istemci/sunucu mantığına dayalıbir protokoldür.. SOAP protokolü sayesinde web servisleri, basit ve mesaj tabanlı bir iletişim sağlar. SOAP’ı benzeri protokollerden ayıran en belirgin ve üstün özelliği yapısının SOAP’ı benzeri protokollerden ayıran en belirgin ve üstün özelliği yapısının XML üzerine kurulu olmasıdır.
Soap’da header ve body kısımları vardır.Body kısmına mesajın ne olduğu yazılır.Güvenlik amacı ile Soap Headera kullanıcı adı ve şifre gömülebiliyor.
WSDL(Web Services Description Language):Bir uygulamada web servisini kullanabilmek için web servisinin hangi protocolleri içerdiğini,arayüzünün nasıl olduğunu,nasıl çağrılabileceğini bilmek gerekir.Bu noktada UDDI’ya ihtiyaç duyulur.UDDI web servisi tanımlamalarını tutn bir protokoldür.
UDDI(Universal Description Discovery and Integration): UDDI kurumların kendilerini ve sağladıkları servisleri yayınlayarak tanıtamalarını, ve bu bilgilerin daha sonra diğer kurumlarca taranıp bulunmasını sağlayan bir standarttır.
DERYA GÜNDÜZ
BİLGİSAYAR MÜHENDİSLİĞİ 4. SINIF
deryagunduz.blogspot.com


Son Yorumlar