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>
Selamlar arkadaşlar,
Bir windows servisi başarıyla yazdınız ve uygulamanın kurulumunu yapacak setup dosyasınıda eklediğinizi varsayıyoruz.Şimdi yazdığımız windows servisi kullanıcı bilgisayarlarına yükledikten sonra otomatik olarak çalışması lazım. yani kullaıcı kurulumu tamamladıktan sonra servis listesine gidip buradan çalıştırmaması istemek biraz abes kaçar. bunun için yapmamız gereken serviceinstaller’da kod yazdığımız yere gidip,
public ProjectInstaller(){InitializeComponent();this.Committed += ProjectInstaller_Committed;}void ProjectInstaller_Committed(object sender, InstallEventArgs e){var controller = new ServiceController(“servisiminadı”);controller.Start();}yukarıda koyu olarak yazdığımız yerleri eklememiz yeterli olacaktır.
İyi Çalışmalar
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
Hata mesajını alma hikayemiz şöyle. Web uygulamamızda SharePoint:SPGridView üzerinde <asp:ButtonField nesnesi yardımı ile belirleyeceğimiz bir dosyayı yeni pencerede açmaya çalıştık ve gridimiz updatepanel içerisinde . Dosya açma örnek kodu :
// .ascx bölümü
<SharePoint:SPGridView runat=”server” CssClass=”ms-formbody” ID=”grid_verigoster” AutoGenerateColumns=”false” >
<asp:ButtonField Text=”DosyayiAc” CommandName=”dosyaac” buttontype=”Link”/>
</SharePoint:SPGridView>
…
// .ascx bölümü
// .cs bölümü
void grid_Selected_RowCommand(object sender, GridViewCommandEventArgs e){
if (e.CommandName == “dosyaac”)
{
string deneme = “http://www.denemesayfa.com/DosyaKalem/40/test.xls“;
Response.Write(“<script>”);
Response.Write(“window.open(‘” + deneme + “‘)”);
Response.Write(“</script>”);
}
}
// .cs bölümü
bu şekilde uygulamayı çalıştırdığımız da hata mesajı ile karşılaştık.
Çözüm
çözüm için </asp:UpdatePanel> dan önce PostBackTrigger eklemeniz yeterli olacaktır.
<Triggers>
<asp:PostBackTrigger ControlID=”Button1″ />
</Triggers>
</asp:UpdatePanel>
Bir Önceki Makalemizde tek bir karaktere göre ve string bir ifadeye göre split kullanımına deyinmeye çalışmıştık. Bu yazımızda ise yine tek karaktere göre ama birden fazla belirterek , yani “+” gördüğünde yada “-” gördüğünde yada “*” gördüğünde ayırma işlemini uygula şeklinde bir örnek yapacağız.
char[] ayiraclar = new char[] { '+', '-','/','*' };
string ifade ="3x+4y-5z";
string[] parcalar= ifade.Text.Split(ayiraclar ,
StringSplitOptions.RemoveEmptyEntries); // StringSplitOptions.RemoveEmptyEntries bu ifade boş olan değeleri listeye atma anlamına geliyor
for (int i = 0; i < parcalar.Length; i++)
{
Console.WriteLine(parcalar[i].ToString());
}
Çıktı olarak
3x
4y
5z
string bir ifadedeki boşlukları yada tek karaktere göre ayırma işlemi
using
System;
class Program
{
static void Main()
{
string s = "bu cumleyi bol";
string s1 = "bu+cumleyi+bol";
//
// boşluğa göre parçalama.
//
string[] kelimeler = s.Split(' ');
foreach (string kelime in kelimeler )
{
Console.WriteLine(kelime );
}
//
// "+" karakterine göre parçalama.
//
string[] kelimeler1 = s1.Split('+');
foreach (string kelime in kelimeler1 )
{
Console.WriteLine(kelime );
}
}
}
birden çok karaktere göre bölme işlemi yada string bir ifadeye göre de diyebiliriz.
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
string deger= "elma\r\narmut\r\nportakal\r\nkiraz";
//
// string bir ifadeye göre yada birden çok karaktere göre bölme.
//
string[] kelimeler = Regex.Split(deger, "\r\n");
foreach (string kelime in kelimeler )
{
Console.WriteLine(kelime );
}
}
}
Uygulama geliştirirken OOP prensiplerine yaklaştıkça nesneler arasındaki ilişkilerin önemi de gitgide artıyor. Ben de tasarım desenlerine verdiğim kısa arada çok karıştırılan iki kavramdan bahsetmek istiyorum. Nesneler arasındaki iki ilişki türü : Aggregation, Association
Aggregation : Bu tür ilişki de nesnelerin yaşam döngüleri birbirlerinden ayrıdır. Bir nesne diğerinden bağımsız olarak da yaşamını sürdürebilir. Yani aralarında bir sahiplik ilişkisi (has-a ) vardır. Örneğin Dizüstü Bilgisayarınız ile onun çantası arasında böyle bir ilişki vardır. Çantayı ayrı olarak ya da laptop’u ayrı olarak düşünebiliriz. Yaşam döngüleri ortak değildir. UML diagramında gösterimi ve koda dökülmüş bir örneği aşağıdaki gibidir.
public class Canta
{
…
}
public class Laptop {
private Canta _canta;
public Laptop(Canta canta)
{
_canta = canta;
}
}
Composition : Bu tür ilişki de nesnelerin yaşam döngüleri birbirleriyle bağlantılıdır. Bir nesne diğerinden bağımsız olarak kullanılamaz. Aralarındaki ilişki parçası olma(is-a-part-of ) ilişkisidir. Az önceki örneğimizden gidersek dizüstü bilgisayarımız ile ekranı arasında bu tarz bir ilişki vardır. UML diagramında gösterimi ve koda dökülmüş bir örneği aşağıdaki gibidir.

public class Ekran
{
…
}
public class Laptop
{
…
Ekran _ekran = new Ekran();
}
private double mesafeHespla(Point from, Point to)
{
double rad = 6371; //Km cinsinden Dünyanın yarı çapı
double p1X = from.X / 180 * Math.PI;
double p1Y = from.Y / 180 * Math.PI;
double p2X = to.X / 180 * Math.PI;
double p2Y = to.Y / 180 * Math.PI;
return Math.Acos(Math.Sin(p1Y) * Math.Sin(p2Y) +
Math.Cos(p1Y) * Math.Cos(p2Y) * Math.Cos(p2X - p1X)) * rad;
}


Son Yorumlar