Uğur ERDEM

Linq ile uptade yapmaya çalşırken, FK  güncellemesi yapıyor iseniz ve Operation is not valid due to the current state of the object hatasını alma olasılığınız var. Hatanın sebebi ise siz güncelleme yapmak isterken veriyi db üzerinden çektiğiniz de linq objesi üzerinde ilişkili olduğu datayla geliyor. Böylece size güncelleme işlemini direk id üzerinden yapmanıza izin vermiyor.  Örnek verecek olursak,aşağıdaki bir linq enity si içerisindeki bir FK property sini görebilirsiniz.  Burada eğer ben kategori değiştirmek için,

subcat.CategoryId = 1;  gibi değişim yapacak olursam yukarıdaki hatayı alıyorum.  Güncellemeyi onun yerine id üzerinden değil doğrudan ilişkili olduğu entity üzerinden yapmamız gerekiyor. Aşağıdaki gibi bir değişim ise başarılı bir şekilde sonuçlanacaktır.

Kolay gelsin,

 public int CategoryId
        {
            get
            {
                return this._CategoryId;
            }
            set
            {
                if ((this._CategoryId != value))
                {
                    if (this._Category.HasLoadedOrAssignedValue)
                    {
                        throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
                    }
                    this.OnCategoryIdChanging(value);
                    this.SendPropertyChanging();
                    this._CategoryId = value;
                    this.SendPropertyChanged("CategoryId");
                    this.OnCategoryIdChanged();
                }
            }
        }
var catId = Convert.ToInt32(leKat.EditValue);
subcategory.Active = cbAktif.Checked;
subcategory.Entry = cbGiris.Checked;
subcategory.SubCategoryName = txtSubCat.Text;
subcategory.Category = _datacontext.Categories.Single(c => c.CategoryId == catId);
 //subcategory.CategoryId = Convert.ToInt32(leKat.EditValue); //hata direk atamaya izin vermiyor.
 _datacontext.SubmitChanges();
 DBLogHelper.InsertTableLog(subcategory, TableList.SubCategories, ActionTypeList.Update);
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

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

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 :)

Merhaba,

Visual studio 2008 html editore gecince problem almaya başladıysanız. Bu yeni yüklediğiniz office 2010 dan kaynaklanıyor olabilir. Nedendir bilinmez ama office 2007 den 2010 ‘a gectikten sonra vs 2008 in html source ve design kısımlarında problem oluştu şöyleki, vs 2008 de bir web projesi açıyorum ve sonrasında codebehind ile işlem yapmamda bir problem çıkarmıyor fakat source kısma yani html editor veya design kısmına geçtiğimde vs 2008 dokunup kalıyor.

Kullandığım bir eklentinin buna neden olabileceğini düşündüm ve eklentiyi kaldırdım. fakat vs 2008 düzelmedi sonrasında vs 2008 tamamen kaldırdım ve yeniden kurdum, ama sonuç sadece kaybettiğim zaman oldu. Bugün bir blogta bunun office 2010 ile alakalı olduğunu gördüm ve çözüm için  gösterdiği yolları yaptım. Vs 2008 im düzeldi.ilginçtirki bu olayla sadece office 2007 den 2010 gecince karşılaşılıyormuş. Belki sizde aynı hatayı alıyorsunuzdur diye çözüm yollarını sizinle paylaşıyorum.

Windows 64bit

C:\Program Files (x86)\Common Files\microsoft shared\OFFICE12\Office Setup Controller\Setup.exe

Windows 32bit

C:\Program Files\Common Files\microsoft shared\OFFICE12\Office Setup Controller\Setup.exe

bulunan dosyaları çalıştırıyoruz ve sonrasında repair / tamir et deyip işlemimizi tamamlıyoruz. Eğer bunu program ekle kaldırdan yapmak istersenizde , Microsoft Visual Studio Web Authoring Component e change / değiştir seçip repair / tamir et de diyebilirsiniz.

Benim yaralandığım kaynağa buradan ulaşabilirsiniz.

Merhaba Arakadaşlar,

Bu yazımda Common Language runtime ile Sql server üzerine C# ‘ hazırladığınız bir fonksiyonu eklemeye anlatacağım. Öncelikle Spliti seçtim çünki Sql üzerinde split yapamıyoruz. bunun çözümüde yine SQL 2005 ile .Net Framework üzerinde geliştirdiğimiz DLL lerin Sql üzerine eklenip functionların oluşturulması ile çözebiliriz.

Devamını okuyun »

Sql 2008 ‘ i Kurdunuz ve Reporting services ayarları yapmaya çalışıyorsunuz ve bu hatayı alıyorsunuz. Configuration Manager: “Invalid namespace”.
Devamını okuyun »

Merhaba Arkadaşlar,

IDE olarak vaz geçilmezim VS. Bu aralarda 2010 üzerinde çalışamaları artırdılar. Peki ben size desemki şimdi bir IDE var ve web üzerinden size istediğiniz tipte proje oluşturmanızı sağlıyor. bununla yetinmezmiş gibi intellisense ve diğer özelliklerede sahip, hadi be oradan seslerini duyar gibiyim. buyrun deneyin benim hoşuma gitti. http://www.coderun.com/ide/

Merhaba arkadaşlar bu yazımda sizlere sql içerisinde satece time kısmını nasıl update edeceğinizden bahsedeceğim. Hepimizin bildiği gibi DateTime veri tipinde olan bir veri hem tarih bilgisini hemde saat bilgisini tutmaktadır.  Kayıtlarınız içerisinde şunu fark ettiniz ekleme yaparken kayıtların hepsinde saat bilgileri yanlış olmuş. Tarihleri update etmeden saat bilgilerini update etmek istiyorsunuz.  Zor değil tabiki buyrun çözümü;

Update myTablo set myTarih =dateadd(dd,datediff(dd,0,[myTarih]),’08:30:00.000′)  where [koşulum]

Yukarıdaki Query de koşula uyan tüm myTarih alanlarının saat bilgilerini parametre olarak verdiğmiz ’08:30:00.000′ saat bilgisine set etmiş oluyoruz.

Herkese bol kodlu günler.

© 2010 bilyaz.com , Programlama Makaleleri, Yazılım Makaleleri , Örnek Kodlar , Eğitim Videoları , C#,ASP.NET,SQL,PHP Suffusion WordPress theme by Sayontan Sinha