C# Devexpress xaf snippets

propxaf.snippet:

<?xml version="1.0" encoding="utf-8" ?>
<CodeSnippets  xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
  <CodeSnippet Format="1.0.0">
    <Header>
      <Title>propxaf</Title>
      <Shortcut>propxaf</Shortcut>
      <Description>Insert a property in XPO</Description>
      <Author>Llamachant Technology Ltd.</Author>
      <SnippetTypes>
        <SnippetType>Expansion</SnippetType>
      </SnippetTypes>
    </Header>
    <Snippet>
      <Declarations>
        <Literal>
          <ID>type</ID>
          <ToolTip>Property type</ToolTip>
          <Default>string</Default>
        </Literal>
        <Literal>
          <ID>property</ID>
          <ToolTip>Property name</ToolTip>
          <Default>Name</Default>
        </Literal>
      </Declarations>
      <Code Language="csharp">
        <![CDATA[
		private $type$ _$property$;
        public $type$ $property$ 
        { 
          get { return _$property$;} 
          set { SetPropertyValue<$type$>(nameof($property$), ref _$property$, value); } 
        }

			$end$]]>
      </Code>
    </Snippet>
  </CodeSnippet>
</CodeSnippets>

propxafCollection.snippet:

<?xml version="1.0" encoding="utf-8" ?>
<CodeSnippets  xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
  <CodeSnippet Format="1.0.0">
    <Header>
      <Title>propxafCollection</Title>
      <Shortcut>propxafCollection</Shortcut>
      <Description>Insert a collection in XPO</Description>
      <Author>Llamachant Technology Ltd.</Author>
      <SnippetTypes>
        <SnippetType>Expansion</SnippetType>
      </SnippetTypes>
    </Header>
    <Snippet>
      <Declarations>
        <Literal>
          <ID>type</ID>
          <ToolTip>Remote Property type</ToolTip>
          <Default>DomainObject</Default>
        </Literal>
        <Literal>
          <ID>property</ID>
          <ToolTip>Collection Property name</ToolTip>
          <Default>MyProperty</Default>
        </Literal>
      </Declarations>
      <Code Language="csharp">
        <![CDATA[
        [Association]
        public XPCollection<$type$> $property$ {
          get { return GetCollection<$type$>(nameof($property$)); }
        }
			$end$]]>
      </Code>
    </Snippet>
  </CodeSnippet>
</CodeSnippets>

propxafCollectionAggregated.snippet

<?xml version="1.0" encoding="utf-8" ?>
<CodeSnippets  xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
  <CodeSnippet Format="1.0.0">
    <Header>
      <Title>propxafCollectionAggregated</Title>
      <Shortcut>propxafCollectionAggregated</Shortcut>
      <Description>Insert an aggregated collection (No link/unlink) in XPO</Description>
      <Author>Llamachant Technology Ltd.</Author>
      <SnippetTypes>
        <SnippetType>Expansion</SnippetType>
      </SnippetTypes>
    </Header>
    <Snippet>
      <Declarations>
        <Literal>
          <ID>type</ID>
          <ToolTip>Remote Property Type</ToolTip>
          <Default>DomainObject</Default>
        </Literal>
        <Literal>
          <ID>property</ID>
          <ToolTip>Collection Property Name</ToolTip>
          <Default>CollectionName</Default>
        </Literal>
      </Declarations>
      <Code Language="csharp">
        <![CDATA[
        [DevExpress.Xpo.Aggregated, Association]
        public XPCollection<$type$> $property$ {
          get { return GetCollection<$type$>(nameof($property$)); }
        }
			$end$]]>
      </Code>
    </Snippet>
  </CodeSnippet>
</CodeSnippets>

propxafCust.snippet

<?xml version="1.0" encoding="utf-8" ?>
<CodeSnippets  xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
  <CodeSnippet Format="1.0.0">
    <Header>
      <Title>propxafCust</Title>
      <Shortcut>propxafCust</Shortcut>
      <Description>Insert a custom object with default Name property</Description>
      <Author>Llamachant Technology Ltd.</Author>
      <SnippetTypes>
        <SnippetType>Expansion</SnippetType>
      </SnippetTypes>
    </Header>
    <Snippet>
      <Declarations>
        <Literal>
          <ID>class</ID>
          <ToolTip>Class Name</ToolTip>
          <Default>CustomObject</Default>
        </Literal>
		<Literal>
		  <ID>classtype</ID>
		  <ToolTip>XPO Base Object Type (BaseObject, XPCustomObject, XPLiteObject, etc.)</ToolTip>
		  <Default>BaseObject</Default>
		</Literal>
      </Declarations>
      <Code Language="csharp">
        <![CDATA[
		[DefaultProperty("Name")]
		public class $class$ : $classtype$
		{
			public $class$(Session session) : base(session) { }
			private string _Name;
			public string Name
			{
				get { return _Name; }
				set { SetPropertyValue<string>("Name", ref _Name, value); }
			}
		}

			$end$]]>
      </Code>
    </Snippet>
  </CodeSnippet>
</CodeSnippets>

propxafOne.snippet

<?xml version="1.0" encoding="utf-8" ?>
<CodeSnippets  xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
  <CodeSnippet Format="1.0.0">
    <Header>
      <Title>propxafOne</Title>
      <Shortcut>propxafOne</Shortcut>
      <Description>Insert a property with a One to Many relationship in XPO</Description>
      <Author>Llamachant Technology Ltd.</Author>
      <SnippetTypes>
        <SnippetType>Expansion</SnippetType>
      </SnippetTypes>
    </Header>
    <Snippet>
      <Declarations>
        <Literal>
          <ID>type</ID>
          <ToolTip>Property Type</ToolTip>
          <Default>DomainObject</Default>
        </Literal>
        <Literal>
          <ID>property</ID>
          <ToolTip>Property Name</ToolTip>
          <Default>MyProperty</Default>
        </Literal>
      </Declarations>
      <Code Language="csharp">
	   <![CDATA[
		private $type$ _$property$;
		[Association]
        public $type$ $property$ 
        { 
          get { return _$property$;} 
          set { SetPropertyValue<$type$>(nameof($property$), ref _$property$, value); } 
        }

			$end$]]>       
      </Code>
    </Snippet>
  </CodeSnippet>
</CodeSnippets>

propxafPersistentAlias.snippet

<?xml version="1.0" encoding="utf-8" ?>
<CodeSnippets  xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
  <CodeSnippet Format="1.0.0">
    <Header>
      <Title>propxafPersistentAlias</Title>
      <Shortcut>propxafPersistentAlias</Shortcut>
      <Description>Insert a persistent alias property in XPO</Description>
      <Author>Llamachant Technology Ltd.</Author>
      <SnippetTypes>
        <SnippetType>Expansion</SnippetType>
      </SnippetTypes>
    </Header>
    <Snippet>
      <Declarations>
	<Literal>
          <ID>expression</ID>
          <ToolTip>Alias Expression</ToolTip>
          <Default></Default>
        </Literal>
        <Literal>
          <ID>type</ID>
          <ToolTip>Property Type</ToolTip>
          <Default>string</Default>
        </Literal>
        <Literal>
          <ID>property</ID>
          <ToolTip>Property Name</ToolTip>
          <Default>Name</Default>
        </Literal>
		<Literal>
          <ID>converttype</ID>
          <ToolTip>Convert to Type</ToolTip>
          <Default>Int32</Default>
        </Literal>
      </Declarations>
      <Code Language="csharp">
        <![CDATA[
	[PersistentAlias("$expression$")]
        public $type$ $property$ 
        { 
          get { return Convert.To$converttype$(EvaluateAlias(nameof($property$))); } 
        }
			$end$]]>
      </Code>
    </Snippet>
  </CodeSnippet>
</CodeSnippets>

https://www.llamachant.com/single-documents/code-snippets/

C# DEVEXPRESS XTRAINPUTBOX

BAZEN FORM YARATMADAN BURDAN DEĞER ALINABİLİR

            string reason = XtraInputBox.Show("Açıklama", "İptal Açıklamasını Giriniz", "");

            if (string.IsNullOrEmpty(reason) || string.IsNullOrWhiteSpace(reason) || reason == "")
            {
                MessageBox.Show("İptal İşleminde Açıklama Girmek Zorunludur.", "", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
//handle cancel
   private void PrintBarcodeDirectClick(object sender, EventArgs e)
        {
            XtraInputBoxArgs xtraInputBoxArgs = new XtraInputBoxArgs();
            xtraInputBoxArgs.Caption = "Miktar";
            xtraInputBoxArgs.Prompt = "Yazılacak Miktar Giriniz";
            xtraInputBoxArgs.DefaultButtonIndex = 0;
            xtraInputBoxArgs.Showing += XtraInputBoxArgs_Showing;
            xtraInputBoxArgs.DefaultResponse = "1";

            SpinEdit editor = new SpinEdit();
            editor.Properties.IsFloatValue = false;
            editor.Properties.Mask.EditMask = "N00";
            editor.Properties.Mask.MaskType = DevExpress.XtraEditors.Mask.MaskType.Numeric;
            editor.Properties.Mask.UseMaskAsDisplayFormat = true;
            xtraInputBoxArgs.Editor = editor;

            var qty = XtraInputBox.Show(xtraInputBoxArgs);
            var result = qty?.ToString();
            MessageBox.Show(result);


        }

        private void XtraInputBoxArgs_Showing(object sender, XtraMessageShowingArgs e)
        {
            e.Form.Text = "Miktar";
        }

DEVEXPRESS XTRAGRID GROUP SUMMARY TO NEW GROUP SUMMARY

    private void GRV_FISICERIGI_CustomSummaryCalculate(object sender, DevExpress.Data.CustomSummaryEventArgs e) {
            if (!e.IsGroupSummary) return;
            if (e.SummaryProcess != CustomSummaryProcess.Finalize) return;

            var item = (GridSummaryItem)e.Item;
            switch (item.Tag) {
                case "G_DMHS":
                    if (e.IsGroupSummary) {
                        var CALISMADURUMU = int.Parse(GRV_FISICERIGI.GetGroupSummaryValue(e.GroupRowHandle, (GridGroupSummaryItem)GRV_FISICERIGI.GroupSummary["G_CALISMADURUMU"]).ToString());
                        e.TotalValue = (CALISMADURUMU - int.Parse(TE_HAFTA.Text)) * 8;
                    }
                    break;
                case "G_EMEESMADMHS":
                    if (e.IsGroupSummary) {
                        var EKMESAI = TimeSpan.Parse(GRV_FISICERIGI.GetGroupSummaryValue(e.GroupRowHandle, (GridGroupSummaryItem)GRV_FISICERIGI.GroupSummary["G_EKMESAI"]).ToString());
                        var EKSIMESAI = TimeSpan.Parse(GRV_FISICERIGI.GetGroupSummaryValue(e.GroupRowHandle, (GridGroupSummaryItem)GRV_FISICERIGI.GroupSummary["G_EKSIMESAI"]).ToString());
                        var CALISMADURUMU = int.Parse(GRV_FISICERIGI.GetGroupSummaryValue(e.GroupRowHandle, (GridGroupSummaryItem)GRV_FISICERIGI.GroupSummary["G_DMHS"]).ToString());
                        e.TotalValue = (EKMESAI - EKSIMESAI) + TimeSpan.FromHours(CALISMADURUMU);
                    }
                    break;
                case "G_EMEESMADMHSB8":
                    if (e.IsGroupSummary) {
                        var G_EMEESMADMHS = TimeSpan.Parse(GRV_FISICERIGI.GetGroupSummaryValue(e.GroupRowHandle, (GridGroupSummaryItem)GRV_FISICERIGI.GroupSummary["G_EMEESMADMHS"]).ToString());
                        e.TotalValue = (G_EMEESMADMHS.Hours + G_EMEESMADMHS.Minutes / 100.0 + G_EMEESMADMHS.Seconds / 10000.0) * (G_EMEESMADMHS > TimeSpan.Zero ? 1 : -1) / 8;

                    }
                    break;

            }
        }

DEVEXPRESS GRID LOAD SAVE FROM REGISTRY VERSION

   string version = "";
        public FRM_MALZEME_FIYATLARI() {
            InitializeComponent(); 
            version = "v" + Assembly.GetEntryAssembly().GetName().Version; 
  DX.DXGRID_LOADLAYOUTFROM_REGISTIRY(GRC_MALZEMEFIYATLARI, GetType().Namespace, "SATISFIYATI_OTOMASYONU_SERVICE__FRM_MALZEMELER_FIYATLARI" + version);
  DX.DXGRID_SAVELAYOUTTO_REGISTIRY(GRC_MALZEMEFIYATLARI, GetType().Namespace, "SATISFIYATI_OTOMASYONU_SERVICE__FRM_MALZEMELER_FIYATLARI" + version);
        }

C# GRIDVIEW ALTTOPLAM GUNCELLEME

        private void gridView1_CustomDrawFooterCell(object sender, DevExpress.XtraGrid.Views.Grid.FooterCellCustomDrawEventArgs e) {
            try {

                if (e.Column == GR_GECIKMIS_ALACAK_YUZDESI) {
                    double BAKIYE = double.Parse(gridView1.Columns["BAKIYE"].SummaryItem.SummaryValue.ToString());
                    double TUTAR = double.Parse(gridView1.Columns["TUTAR"].SummaryItem.SummaryValue.ToString());
                    double YORAN = Math.Round( (BAKIYE / TUTAR)*100,2);
                    GridView view = (GridView)sender;
                    e.Info.DisplayText ="%"+ YORAN.ToString();
                }

            } catch {

            }
        }

C# NOTLARIM

Devexpress kullanımında gridview kullanırken setgridvalue kullanmak yerine datatableda gerekli değişiklikleri yaptıktan sonra gridccontrolun datasourceunu datatablea eşitlemek daha sorunsuz olur. Sebebi gridview count kullanırken bazı değerleri setgridvalueda atmamakta ama filtreleyince atmakta.

Devexpress XtraGridView büyük datada update işlemi

        public DLG_TAKVIM() {

            InitializeComponent();
            Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;
            BMS_DLL.CFGGETSET.AYARLARIYUKLE();
            gridControl1.DataSource = BMS_DLL.SQL.SELECT("select * from (SELECT dt, Ay, Gün, Hafta, Saat, Açıklama, Saat Old_Saat, Açıklama Old_Açıklama FROM BM_PDKS_TAKVIM WITH(NOLOCK)) as t");
        }
        private void GUNCELLE() {
            try {
                DataTable DT = (DataTable)gridControl1.DataSource;
                DataRow[] DT_NEW = DT.Select("(Saat <> Old_Saat) OR (Açıklama <> Old_Açıklama)");
                if (DT_NEW != null && DT_NEW.Length > 0) {
                    foreach (DataRow R in DT_NEW) {
                        DateTime _DT= (DateTime)R["dt"];
                        double SAAT = (double)R["Saat"];
                        string ACIKLAMA = (string)R["Açıklama"];
                        BMS_DLL.SQL.EXECUTE(this, "UPDATE BM_PDKS_TAKVIM SET Saat='"+ SAAT + "' , Açıklama='"+ ACIKLAMA + "' WHERE dt='"+_DT+"' ");
                    }

                }
            } catch { }
        }

Yukarıdaki kodda gridview üzerinden deişen alanları alıp(saat,açıklama) sqlde sadece bu satırları update etme işlemini yapar.