C# Devexpress Xaf Notları

Eğer BusinnesObjects Class XPObject üzerinden inherit oluyorsa (varsayılan BaseObject) Detail viewde oid alanı gelmekte. Bunu gizlemek için Module\Module.cs eklenmeli;

typesInfo.FindTypeInfo(typeof(XPObject)).KeyMember.AddAttribute(new BrowsableAttribute(false));

OnSaving()de otomatik kod ataması için DistributedIdGeneratorHelper.Generate kullanımı;

https://supportcenter.devexpress.com/ticket/details/e4904/how-to-generate-a-sequential-and-user-friendly-identifier-field-within-an-xpo-business

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# 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.

VS 2017 WINDOWS SERVICE PROJECT SETUP

  1. Right click on the setup project in your Solution Explorer.
  2. Select View > Custom Actions. (In VS2008 it might be View > Editor > Custom Actions)
  3. Right-click on the Install action in the Custom Actions tree and select ‘Add Custom Action…’
  4. In the “Select Item in Project” dialog, select Application Folder and click OK.
  5. Click OK to select “Primary output from…” option. A new node should be created.
  6. Repeat steps 4 – 5 for commit, rollback and uninstall actions.

C# SQL TABLE SCRIPT GENERATOR

using System;

namespace SQL_HELPER_APP
{
    public partial class SQLTABLESCRIPT : DevExpress.XtraEditors.XtraForm
    {
        public SQLTABLESCRIPT()
        {
            InitializeComponent();
        }
        private void simpleButton1_Click(object sender, EventArgs e)
        {
            memoEdit1.Text = "";
            string IMAGEFIELD = "0";
            memoEdit1.Text += "CREATE TABLE [dbo].[" + textEdit1.Text + "](" + Environment.NewLine;
            memoEdit1.Text += "[" + textEdit2.Text + "] [INT] IDENTITY(1,1) NOT NULL," + Environment.NewLine;
            for (int i = 0; i < gridView1.RowCount; i++)
            {
                string NAME = "[" + gridView1.GetRowCellValue(i, "NAME").ToString() + "]";
                string TYPE = "[" + gridView1.GetRowCellValue(i, "TYPE").ToString() + "]";
                string LENGTH = gridView1.GetRowCellValue(i, "LENGTH").ToString();
                string ISNULL = gridView1.GetRowCellValue(i, "ISNULL").ToString();
                ISNULL = ISNULL == "True" ? " NULL," : ",";
                if (IMAGEFIELD == "0")
                {
                    IMAGEFIELD = TYPE == "[Image]" ? "1" : "0";
                }
                switch (TYPE)
                {
                    case "[Datetimeoffset]": TYPE = "[DATETIMEOFFSET](7)"; break;
                    case "[Decimal]": TYPE = "[DECIMAL](18, 0)"; break;
                    case "[Nchar]": TYPE = "[NCHAR](10)"; break;
                    case "[Numeric]": TYPE = "[NUMERIC](18, 0)"; break;
                    case "[Nvarchar]": TYPE = "[NVARCHAR](50)"; break;
                    case "[Nvarchar(max)]": TYPE = "[NVARCHAR](MAX)"; break;
                    case "[Time]": TYPE = "[TIME](7)"; break;
                    case "[Varbinary]": TYPE = "[VARBINARY](50)"; break;
                    case "[Varbinary(max)]": TYPE = "[VARBINARY](MAX)"; break;
                    case "[Varchar]": TYPE = "[VARCHAR](255)"; break;
                    case "[Varchar(max)]": TYPE = "[VARCHAR](MAX)"; break;
                    default: break;
                }
                memoEdit1.Text += NAME + " " + TYPE + ISNULL;
                memoEdit1.Text += Environment.NewLine;
            }
            memoEdit1.Text += "CONSTRAINT [PK_" + textEdit1.Text + "] PRIMARY KEY CLUSTERED " + Environment.NewLine;
            memoEdit1.Text += "(" + Environment.NewLine;
            memoEdit1.Text += "[" + textEdit2.Text + "] ASC" + Environment.NewLine;
            memoEdit1.Text += ")WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]" + Environment.NewLine;
            memoEdit1.Text += IMAGEFIELD == "1" ? ") ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]" + Environment.NewLine : ") ON [PRIMARY] " + Environment.NewLine;
        }
        private void repositoryItemButtonEdit1_Click(object sender, EventArgs e)
        {
            gridView1.DeleteSelectedRows();
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SQL_HELPER_APP
{
    public class FIELDS
    {
        public string NAME { get; set; } = string.Empty;
        public string TYPE { get; set; } = "Varchar";
        public string LENGTH { get; set; } = "255";
        public bool ISNULL { get; set; } =true;
    }
}

       this.repositoryItemComboBoxTYPE.Items.AddRange(new object[] {
            "Bigint",
            "Binary",
            "Bit",
            "Char",
            "Cursor",
            "Date",
            "Datetime",
            "Datetime2",
            "Datetimeoffset",
            "Decimal",
            "Float",
            "Image",
            "Int",
            "Money",
            "Nchar",
            "Ntext",
            "Numeric",
            "Nvarchar",
            "Nvarchar(max)",
            "Real",
            "Smalldatetime",
            "Smallint",
            "Smallmoney",
            "Sql_variant",
            "Text",
            "Time",
            "Timestamp",
            "Tinyint",
            "Uniqueidentifier",
            "Varbinary",
            "Varbinary(max)",
            "Varchar",
            "Varchar(max)",
            "Xml"});
            this.repositoryItemComboBoxTYPE.Name = "repositoryItemComboBoxTYPE";

C# BIR FORMDAN AÇIK BAŞKA BIR FORMA BILGI AKTARIMI

ÖNCELİKLE AKTARILACAK OLAN FORMDAKI CONTROLLERIN MODIFY PRIVATEDEN PUBLICE DEGISTIRILMELI.

 

 
public partial class MAINFORM : Form
    {
         SECONDFORM SF;
     }

      public MAINFORM()
{

}

        private void simpleButton1_Click(object sender, EventArgs e)
        {

            gb_UC_CONTAINER.Controls.Clear();
            UCP = new SICILLERHAREKET(M, CFG, C);
            gb_UC_CONTAINER.Controls.Add(UCP);
            UCP.Dock = DockStyle.Fill;
        }



 private void sle_PROJELER_EditValueChanged(object sender, EventArgs e)
{
  SF.te_PROJE.Text = (string)sle_PROJELER.EditValue;
}

c# devexpress gridview selectedrow to datatable dataset

            DataTable MyTable = new DataTable(); // 1
            DataTable MyTableByName = new DataTable("MyTableName"); // 2




            MyTable.Columns.Add("AMBAR", typeof(string));

            int[] SROWSdublicate = _gv_SARFFISI_.GetSelectedRows();
            for (int i = 0; i < SROWSdublicate.Length; i++)
            {
                MyTable.Rows.Add(_gv_SARFFISI_.GetRowCellValue(SROWSdublicate[i], "Ambar").ToString());
                //dr["AMBAR"] = _gv_SARFFISI_.GetRowCellValue(SROWSdublicate[i], "Ambar").ToString();
                //dt.Rows.Add(new object[] { "Ravi", 500 });
                // dt.Rows.Add(dr);

            }              

whole grid rows (without select)

for (int i = 0; i < gridView1.RowCount; i++) {

VISUAL STUDIO C# SQL SERVER CONNECTION HELPER

using System.Data;
using System.Data.SqlClient;
using System.Windows.Forms;
using DevExpress.XtraGrid;
using DevExpress.XtraGrid.Views.Grid;




namespace BMS_PDKS
{
    public class SQLHELPER
    {
        string baglanticumlesi = string.Format("Server={0}; Database={1}; User Id ={2};Password ={3}", CFG_TEMPLATE.CONFIG.LGDBSERVER, CFG_TEMPLATE.CONFIG.LGDBDATABASE, CFG_TEMPLATE.CONFIG.LGDBUSERNAME, CFG_TEMPLATE.CONFIG.LGDBPASSWORD);
        SqlConnection con;
        SqlDataAdapter adtr;
        public SqlConnection baglanti()
        {
            con = new SqlConnection(baglanticumlesi);
            if (con.State == ConnectionState.Closed)
            {
                con.Open();
            }
            return con;
        }
        //public DataTable veri_getirme(string sqlcumle, DevExpress.XtraGrid.GridControl dtgrd)
        public DataTable GET_B_CAPIFIRM(GridControl dtgrdc,GridView dtgrdv)
        {
            DataTable dt = new DataTable();
            dtgrdv.Columns.Clear();
            try
            {
                using (adtr = new SqlDataAdapter("select * from B_CAPIFIRM", baglanti()))
                { adtr.Fill(dt); dtgrdc.DataSource = dt; }
            }
            catch (System.Exception ex) { MessageBox.Show(ex.Message); }
            return dt;
        }
        public DataTable GET_B_CAPIUSER(GridControl dtgrdc, GridView dtgrdv)
        {
            DataTable dt = new DataTable();
            dtgrdv.Columns.Clear();
            try
            {
                using (adtr = new SqlDataAdapter("select * from B_CAPIUSER", baglanti()))
                { adtr.Fill(dt); dtgrdc.DataSource = dt; }
            }
            catch (System.Exception ex) { MessageBox.Show(ex.Message); }
            return dt;
        }

    }
}

--


DAHA SONRA ANA FORMDA DEVEXPRESS GRIDVIEW YARAT VE ŞU ŞEKİLDE ÇAĞIR:


        SQLHELPER sqlhelper = new SQLHELPER();


        private void button1_Click(object sender, EventArgs e)
        {
            sqlhelper.GET_B_CAPIFIRM( gridControl1,gridView1);
        }
        private void button2_Click(object sender, EventArgs e)
        {
            sqlhelper.GET_B_CAPIUSER(gridControl1, gridView1);
        }