{"id":3132,"date":"2020-02-09T22:42:13","date_gmt":"2020-02-09T13:42:13","guid":{"rendered":"https:\/\/okamurax.com\/?p=3132"},"modified":"2020-02-26T05:21:39","modified_gmt":"2020-02-25T20:21:39","slug":"c-datagridview-%e6%93%8d%e4%bd%9c%e5%9f%ba%e6%9c%ac","status":"publish","type":"post","link":"https:\/\/appbay.org\/?p=3132","title":{"rendered":"C# DataGridView \u64cd\u4f5c\u57fa\u672c"},"content":{"rendered":"<p>\u6700\u8fd1DataGridView\u3092\u6271\u3046\u5834\u5408\u306e\u6d41\u308c\u3002<\/p>\n<p>\u30fb\u5185\u5bb9\u306e\u8868\u793a\u306f\u30e2\u30c7\u30eb\u30af\u30e9\u30b9\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u30ea\u30b9\u30c8\u5316\u3057\u3066\u30d0\u30a4\u30f3\u30c9\u3059\u308b\u3002<br \/>\n\u5165\u529b\u5185\u5bb9\u3092\u30d1\u30fc\u30b9\u3057\u305f\u308a\u3059\u308b\u5834\u5408\u306f\u3001\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306e\u30d7\u30ed\u30d1\u30c6\u30a3\u3067\u51e6\u7406\u3002\u8868\u793a\u306e\u30b9\u30bf\u30a4\u30eb\u306b\u3064\u3044\u3066\u306fDataGridView\u306e\u30bb\u30eb\u3067\u51e6\u7406\u3002<\/p>\n<p>\u5185\u90e8\u3067\u4fdd\u6301\u3059\u308b\u30c7\u30fc\u30bf\u578b\u306fstring\u578b\u304c\u591a\u3044\u3002\u624b\u5165\u529b\u3055\u308c\u308b\u5024\u306f\u30d1\u30fc\u30b9\u3067\u5f3e\u3044\u305f\u3068\u304d\u306b\u7a7a\u767d\u306b\u623b\u3057\u305f\u3044\u3068\u601d\u3046\u3053\u3068\u304c\u591a\u3044\u3002\u5c11\u3057\u524d\u306f\u30d0\u30a4\u30f3\u30c9\u305b\u305a\u30d1\u30fc\u30b9\u306e\u51e6\u7406\u3092\u9593\u306b\u5165\u308c\u3066\u3044\u305f\u3002<\/p>\n<pre class=\"lang:c# decode:true\">using System;\r\nusing System.Collections.Generic;\r\nusing System.ComponentModel;\r\nusing System.Data;\r\nusing System.Drawing;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing System.Threading.Tasks;\r\nusing System.Windows.Forms;\r\n\r\nnamespace ProductionManagement\r\n{\r\n    public partial class ScheduleListForm : Form\r\n    {\r\n        public ScheduleListForm()\r\n        {\r\n            InitializeComponent();\r\n            SetTextBoxBind();\r\n        }\r\n\r\n        private void SetTextBoxBind()\r\n        {\r\n            StartYmd.DataBindings.Add(\"Text\", new TextBoxBind(), \"\u5e74\u6708\u65e5\");\r\n            EndYmd.DataBindings.Add(\"Text\", new TextBoxBind(), \"\u5e74\u6708\u65e5\");\r\n        }\r\n    }\r\n\r\n    class TextBoxBind\r\n    {\r\n        private string ymd;\r\n        public object \u5e74\u6708\u65e5\r\n        {\r\n            set\r\n            {\r\n                try\r\n                {\r\n                    var dt = DateTime.Parse(Convert.ToString(value));\r\n                    ymd = dt.ToString(\"yyyy\/MM\/dd\");\r\n                }\r\n                catch { ymd = \"\"; }\r\n            }\r\n            get { return ymd; }\r\n        }\r\n    }\r\n}<\/pre>\n<p>\u3053\u3053\u3067\u306f\u8a66\u3057\u306b\u30c6\u30ad\u30b9\u30c8\u30dc\u30c3\u30af\u30b9\u306e\u30d0\u30a4\u30f3\u30c9\u51e6\u7406\u3060\u3051\u3002<\/p>\n<p>\u30fb\u30ab\u30e9\u30e0\u3068DB\u30b9\u30ad\u30fc\u30de\u306f\u30ea\u30d5\u30ec\u30af\u30b7\u30e7\u30f3\u3067\u9023\u52d5\u3055\u305b\u3001\u4e00\u7b87\u6240\u3067\u6307\u5b9a\u3002DB\u306e\u30c6\u30fc\u30d6\u30eb\u4f5c\u6210\u3082\u30b3\u30fc\u30c9\u5316\u3057\u3066\u304a\u304f\u3002<br \/>\n(\u3053\u3053\u3067\u306f\u8a18\u8f09\u3057\u3066\u3044\u306a\u3044)<\/p>\n<p>\u30fb\u691c\u7d22\u30dc\u30c3\u30af\u30b9\u304c\u3042\u308b\u5834\u5408\u306e\u30af\u30a8\u30ea\u3082\u30ea\u30d5\u30af\u30b7\u30e7\u30f3\u3067\u4f5c\u308b\u3002<br \/>\n(\u3053\u3053\u3067\u306f\u8a18\u8f09\u3057\u3066\u3044\u306a\u3044)<\/p>\n<p>\u30fb\u5024\u304c\u5909\u66f4\u3055\u308c\u305f\u884c\u306f\u8272\u3092\u5909\u3048\u308b\u3002<\/p>\n<p>\u30fb\u66f4\u65b0\u306e\u3068\u304d\u306f\u30b9\u30af\u30ed\u30fc\u30eb\u4f4d\u7f6e\u3092\u623b\u3059\u3002\u65b0\u898f\u306e\u3068\u304d\u306f\u4e00\u756a\u4e0b\u3078\u30b9\u30af\u30ed\u30fc\u30eb\u3002<\/p>\n<p>\u30fb\u884c\u3092\u8ffd\u52a0\u3059\u308b\u3068\u304d\u306f\uff11\u884c\u306e\u307f\u306e\u8868\u793a\u306b\u5207\u308a\u66ff\u3048\u308b\u3002<br \/>\n\u66f4\u65b0\u51e6\u7406\u306f\u30d5\u30e9\u30b0\u7528\u306e\u30ab\u30e9\u30e0\u3092\u898b\u3066\u5224\u65ad\u3002<\/p>\n<p>\u30fb\u30de\u30b9\u30bf\u5316\u3057\u3066\u3044\u308b\u30ab\u30e9\u30e0\u306f\u3001\u30af\u30ea\u30c3\u30af\u6642\u306b\u30d5\u30a9\u30fc\u30e0\u3092\u8868\u793a\u3055\u305b\u308b\u3002<br \/>\n(\u3053\u3053\u3067\u306f\u8a18\u8f09\u3057\u3066\u3044\u306a\u3044)<\/p>\n<blockquote class=\"wp-embedded-content\" data-secret=\"cIWpfFIe9F\"><p><a href=\"https:\/\/appbay.org\/?p=2575\">C# \u7c21\u6613\u30a4\u30f3\u30af\u30ea\u30e1\u30f3\u30bf\u30eb\u30b5\u30fc\u30c1\u2461<\/a><\/p><\/blockquote>\n<p><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"&#8220;C# \u7c21\u6613\u30a4\u30f3\u30af\u30ea\u30e1\u30f3\u30bf\u30eb\u30b5\u30fc\u30c1\u2461&#8221; &#8212; \u30c6\u30c3\u30af\u30e1\u30e2\" src=\"https:\/\/appbay.org\/?p=2575&#038;embed=true#?secret=jjv3QP5nh4#?secret=cIWpfFIe9F\" data-secret=\"cIWpfFIe9F\" width=\"525\" height=\"296\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe><\/p>\n<p>\u30fb\u30ab\u30e9\u30e0\u306e\u8868\u793a\/\u975e\u8868\u793a\u3001\u30b5\u30a4\u30ba\u3001\u4e26\u3073\u9806\u306f\u4e0a\u8a18\u3068\u540c\u3058\u3088\u3046\u306b\u30c6\u30ad\u30b9\u30c8\u30d5\u30a1\u30a4\u30eb\u3067\u6307\u5b9a\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b\u3002(\u3053\u3053\u3067\u306f\u8a18\u8f09\u3057\u3066\u3044\u306a\u3044)<br \/>\n\u30e6\u30fc\u30b6\u30fc\u5074\u3067\u5909\u66f4\u3057\u305f\u3044\u3067\u3042\u308d\u3046\u90e8\u5206\u306f\u30c6\u30ad\u30b9\u30c8\u30d5\u30a1\u30a4\u30eb\u3067\u51e6\u7406\u3067\u304d\u308b\u3088\u3046\u306b\u3002<\/p>\n<p>\u672c\u6765\u306f\u3082\u3063\u3068\u30af\u30e9\u30b9\u306b\u5206\u6563\u3055\u305b\u3066\u3044\u308b\u3051\u3069\u3001\u4eca\u56de\u306f\u898b\u3084\u3059\u3044\u3088\u3046\u306b\uff11\u3064\u306e\u30d5\u30a1\u30a4\u30eb\u306b\u5165\u308c\u305f\u3002\u4e00\u90e8\u306f\u6d41\u7528\u3057\u3066\u3044\u308b\u306e\u3067\u8f09\u3063\u3066\u3044\u306a\u3044\u3002<\/p>\n<p>\u3053\u3053\u307e\u3067\u624b\u52d5\u3067\u3084\u3089\u306a\u304f\u3066\u3082\u8272\u3005\u65b9\u6cd5\u306f\u3042\u308b\u306e\u3060\u308d\u3046\u3051\u3069\u3001\u4f55\u3060\u304b\u3093\u3060\u624b\u4f5c\u308a\u3067\u843d\u3061\u7740\u3044\u305f\u3002<\/p>\n<pre class=\"lang:c# decode:true \">using System;\r\nusing System.Collections.Generic;\r\nusing System.ComponentModel;\r\nusing System.Data;\r\nusing System.Drawing;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing System.Threading.Tasks;\r\nusing System.Windows.Forms;\r\n\r\nnamespace ProductionManagement\r\n{\r\n    public partial class ScheduleForm : Form\r\n    {\r\n        string _SalesID;\r\n        string _SalesStaff;\r\n\r\n        public ScheduleForm(string i, string n)\r\n        {\r\n            InitializeComponent();\r\n\r\n            _SalesID = i;\r\n            _SalesStaff = n;\r\n\r\n            EventAttach();\r\n\r\n            DataLoad();\r\n            SetViewStyle();\r\n        }\r\n        private void SetViewStyle()\r\n        {\r\n            DataGridView.Columns[\"ID\"].Visible = false;\r\n            DataGridView.Columns[\"Modified\"].Visible = false;\r\n            DataGridView.Columns[\"\u5916\u6ce8\u4e00\u89a7ID\"].Visible = false;\r\n            DataGridView.Columns[\"\u62c5\u5f53\u8005\u540d\"].Visible = false;\r\n\r\n            DataGridView.Columns[\"\u540d\u79f0\"].Width = 190;\r\n            DataGridView.Columns[\"\u958b\u59cb\u65e5\"].Width = 120;\r\n            DataGridView.Columns[\"\u7d42\u4e86\u65e5\"].Width = 120;\r\n\r\n            DataGridView.RowHeadersWidth = 50;\r\n            DataGridView.SelectionMode = DataGridViewSelectionMode.FullRowSelect;\r\n            DataGridView.ColumnHeadersDefaultCellStyle.WrapMode = DataGridViewTriState.False;\r\n            DataGridView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing;\r\n            DataGridView.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.None;\r\n            DataGridView.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.None;\r\n            DataGridView.Font = new Font(\"\u30e1\u30a4\u30ea\u30aa\", 10);\r\n            DataGridView.RowTemplate.Height = 22;\r\n            DataGridView.AllowUserToAddRows = false;\r\n            DataGridView.MultiSelect = false;\r\n\r\n            typeof(DataGridView).\r\n                GetProperty(\"DoubleBuffered\", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).\r\n                SetValue(DataGridView, true, null);\r\n        }\r\n\r\n        private void DataLoad()\r\n        {\r\n            BindingList&lt;ScheduleModel&gt; models = new BindingList&lt;ScheduleModel&gt;();\r\n            var currentScrollRowIndex = DataGridView.FirstDisplayedScrollingRowIndex;\r\n\r\n            Query q = new Query()\r\n            {\r\n                QueryString = $\"select * from \u4f5c\u696d\u4e00\u89a7 where \u62c5\u5f53\u8005\u540d = '{_SalesStaff}'\"\r\n            };\r\n\r\n            DataTable dt = q.ExecuteQuery();\r\n\r\n            for (int r = 0; r &lt; dt.Rows.Count; r++)\r\n            {\r\n                models.Add(new ScheduleModel()\r\n                {\r\n                    ID = dt.Rows[r][\"ID\"],\r\n                    \u5916\u6ce8\u4e00\u89a7ID = dt.Rows[r][\"\u5916\u6ce8\u4e00\u89a7ID\"],\r\n                    \u62c5\u5f53\u8005\u540d = dt.Rows[r][\"\u62c5\u5f53\u8005\u540d\"],\r\n                    \u540d\u79f0 = dt.Rows[r][\"\u540d\u79f0\"],\r\n                    \u958b\u59cb\u65e5 = dt.Rows[r][\"\u958b\u59cb\u65e5\"],\r\n                    \u7d42\u4e86\u65e5 = dt.Rows[r][\"\u7d42\u4e86\u65e5\"]\r\n                });\r\n            }\r\n            DataGridView.DataSource = models;\r\n\r\n            if (currentScrollRowIndex &gt; 0 &amp;&amp; DataGridView.Rows.Count &gt; 0 &amp;&amp;\r\n                DataGridView.Rows.Count &gt;= currentScrollRowIndex)\r\n            {\r\n                DataGridView.FirstDisplayedScrollingRowIndex = currentScrollRowIndex;\r\n            }\r\n        }\r\n\r\n        private void RowModified(DataGridViewRow targetRow)\r\n        {\r\n            targetRow.HeaderCell.Value = \"*\";\r\n            targetRow.DefaultCellStyle.ForeColor = Color.Blue;\r\n            targetRow.DefaultCellStyle.Font = new Font(\"\u30e1\u30a4\u30ea\u30aa\", 10, FontStyle.Italic);\r\n        }\r\n\r\n        private void EventAttach()\r\n        {\r\n            DataGridView.CellValueChanged += (s, e) =&gt;\r\n            {\r\n                DataGridViewRow targetRow = DataGridView.Rows[e.RowIndex];\r\n                RowModified(targetRow);\r\n\r\n                if (new Utility().CellToString(targetRow.Cells[\"Modified\"]) == \"\u65b0\u898f\") return; \/\/ Modified\u304c\u65b0\u898f\u306e\u5834\u5408\u306f\u5909\u66f4\u306b\u3057\u306a\u3044\r\n                targetRow.Cells[\"Modified\"].Value = \"\u5909\u66f4\";\r\n            };\r\n\r\n            SaveButton.Click += (s, e) =&gt;\r\n            {\r\n                List&lt;string&gt; listSql = new List&lt;string&gt;();\r\n\r\n                bool existsNewRow = false;\r\n\r\n                for (int r = 0; r &lt; DataGridView.Rows.Count; r++)\r\n                {\r\n                    var u = new Utility();\r\n                    if (u.CellToString(DataGridView.Rows[r].Cells[\"Modified\"]) == \"\u65b0\u898f\")\r\n                    {\r\n                        existsNewRow = true;\r\n                        string rowName = u.QuoteReplace(u.CellToString(DataGridView.Rows[r].Cells[\"\u540d\u79f0\"]));\r\n                        string startDate = u.QuoteReplace(u.CellToString(DataGridView.Rows[r].Cells[\"\u958b\u59cb\u65e5\"]));\r\n                        string endDate = u.QuoteReplace(u.CellToString(DataGridView.Rows[r].Cells[\"\u7d42\u4e86\u65e5\"]));\r\n\r\n                        if (startDate == \"\" &amp;&amp; endDate != \"\")\r\n                        {\r\n                            startDate = endDate;\r\n                        }\r\n                        else if (startDate != \"\" &amp;&amp; endDate == \"\")\r\n                        {\r\n                            endDate = startDate;\r\n                        }\r\n\r\n                        string sql = \"insert into \u4f5c\u696d\u4e00\u89a7(\u62c5\u5f53\u8005\u540d,\u5916\u6ce8\u4e00\u89a7ID,\u540d\u79f0,\u958b\u59cb\u65e5,\u7d42\u4e86\u65e5) values \" + \r\n                        $\"('{_SalesStaff}','{_SalesID}','{rowName}','{startDate}','{endDate}')\";\r\n\r\n                        listSql.Add(sql);\r\n                    }\r\n                    else if (u.CellToString(DataGridView.Rows[r].Cells[\"Modified\"]) == \"\u5909\u66f4\")\r\n                    {\r\n                        string id = u.QuoteReplace(u.CellToString(DataGridView.Rows[r].Cells[\"ID\"]));\r\n                        string rowName = u.QuoteReplace(u.CellToString(DataGridView.Rows[r].Cells[\"\u540d\u79f0\"]));\r\n                        string startDate = u.QuoteReplace(u.CellToString(DataGridView.Rows[r].Cells[\"\u958b\u59cb\u65e5\"]));\r\n                        string endDate = u.QuoteReplace(u.CellToString(DataGridView.Rows[r].Cells[\"\u7d42\u4e86\u65e5\"]));\r\n\r\n                        if (startDate == \"\" &amp;&amp; endDate != \"\")\r\n                        {\r\n                            startDate = endDate;\r\n                        }\r\n                        else if (startDate != \"\" &amp;&amp; endDate == \"\")\r\n                        {\r\n                            endDate = startDate;\r\n                        }\r\n\r\n                        string sql = \"update \u4f5c\u696d\u4e00\u89a7 set \" +\r\n                        $\"\u540d\u79f0 = '{rowName}', \u958b\u59cb\u65e5 = '{startDate}', \u7d42\u4e86\u65e5 = '{endDate}' where ID = \" + id;\r\n\r\n                        listSql.Add(sql);\r\n                    }\r\n                }\r\n                new Query().ExecuteNonQuery(listSql);\r\n                DataLoad();\r\n\r\n                if (existsNewRow == true &amp;&amp; DataGridView.Rows.Count &gt; 0)\r\n                {\r\n                    DataGridView.FirstDisplayedScrollingRowIndex = DataGridView.Rows.Count - 1;\r\n                }\r\n            };\r\n\r\n            NewRowButton.Click += (s, e) =&gt;\r\n            {                \r\n                var u = new Utility();\r\n                bool existsNewRow = DataGridView.Rows.OfType&lt;DataGridViewRow&gt;().Any(x =&gt; u.CellToString(x.Cells[\"Modified\"]) == \"\u65b0\u898f\");\r\n\r\n                if (existsNewRow)\r\n                {\r\n                    var currentModels = (BindingList&lt;ScheduleModel&gt;)DataGridView.DataSource;\r\n                    currentModels.Add(new ScheduleModel() { Modified = \"\u65b0\u898f\" });\r\n                }\r\n                else\r\n                {\r\n                    var newModels = new BindingList&lt;ScheduleModel&gt;();\r\n                    newModels.Add(new ScheduleModel() { Modified = \"\u65b0\u898f\" });\r\n                    DataGridView.DataSource = newModels;\r\n                }\r\n            };\r\n\r\n            DeleteRowButton.Click += (s, e) =&gt;\r\n            {\r\n                if (DataGridView.SelectedRows.Count &lt;= 0) return;\r\n\r\n                string id = new Utility().CellToString(DataGridView.CurrentRow.Cells[\"ID\"]);\r\n                if (id == \"\") return;\r\n\r\n                DialogResult yesNo = MessageBox.Show(\"\u524a\u9664\u3057\u307e\u3059\u304b\uff1f\", \"\", MessageBoxButtons.YesNo);\r\n                if (yesNo == DialogResult.No) return;\r\n\r\n                var listSql = new List&lt;string&gt;();\r\n                listSql.Add(\"delete from \u4f5c\u696d\u4e00\u89a7 where ID = \" + id);\r\n\r\n                new Query().ExecuteNonQuery(listSql);\r\n\r\n                MessageBox.Show(\"\u524a\u9664\u3057\u307e\u3057\u305f\u3002\");\r\n                DataLoad();\r\n            };\r\n        }\r\n    }\r\n\r\n    public class ScheduleModel\r\n    {\r\n        private string id;\r\n        public object ID\r\n        {\r\n            set { id = Convert.ToString(value); }\r\n            get { return id; }\r\n        }\r\n\r\n        private string modified;\r\n        public object Modified\r\n        {\r\n            set { modified = Convert.ToString(value); }\r\n            get { return modified; }\r\n        }\r\n\r\n        private string parentID;\r\n        public object \u5916\u6ce8\u4e00\u89a7ID\r\n        {\r\n            set { parentID = Convert.ToString(value); }\r\n            get { return parentID; }\r\n        }\r\n\r\n        private string staffName;\r\n        public object \u62c5\u5f53\u8005\u540d\r\n        {\r\n            set { staffName = Convert.ToString(value); }\r\n            get { return staffName; }\r\n        }\r\n\r\n        private string rowName;\r\n        public object \u540d\u79f0\r\n        {\r\n            set { rowName = Convert.ToString(value); }\r\n            get { return rowName; }\r\n        }\r\n\r\n        private string startDate;\r\n        public object \u958b\u59cb\u65e5\r\n        {\r\n            set\r\n            {\r\n                try\r\n                {\r\n                    var dt = DateTime.Parse(Convert.ToString(value));\r\n                    startDate = dt.ToString(\"yyyy\/MM\/dd\");\r\n                }\r\n                catch { startDate = \"\"; }\r\n            }\r\n            get { return startDate; }\r\n        }\r\n\r\n        private string endDate;\r\n        public object \u7d42\u4e86\u65e5\r\n        {\r\n            set\r\n            {\r\n                try\r\n                {\r\n                    var dt = DateTime.Parse(Convert.ToString(value));\r\n                    endDate = dt.ToString(\"yyyy\/MM\/dd\");\r\n                }\r\n                catch { endDate = \"\"; }\r\n            }\r\n            get { return endDate; }\r\n        }\r\n\r\n    }\r\n\r\n}\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u6700\u8fd1DataGridView\u3092\u6271\u3046\u5834\u5408\u306e\u6d41\u308c\u3002 \u30fb\u5185\u5bb9\u306e\u8868\u793a\u306f\u30e2\u30c7\u30eb\u30af\u30e9\u30b9\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u30ea\u30b9\u30c8\u5316\u3057\u3066\u30d0\u30a4\u30f3\u30c9\u3059\u308b\u3002 \u5165\u529b\u5185\u5bb9\u3092\u30d1\u30fc\u30b9\u3057\u305f\u308a\u3059\u308b\u5834\u5408\u306f\u3001\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306e\u30d7\u30ed\u30d1\u30c6\u30a3\u3067\u51e6\u7406\u3002\u8868\u793a\u306e\u30b9\u30bf\u30a4\u30eb\u306b\u3064\u3044\u3066\u306fDataGr &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/appbay.org\/?p=3132\" class=\"more-link\"><span class=\"screen-reader-text\">&#8220;C# DataGridView \u64cd\u4f5c\u57fa\u672c&#8221; \u306e<\/span>\u7d9a\u304d\u3092\u8aad\u3080<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[9],"class_list":["post-3132","post","type-post","status-publish","format-standard","hentry","category-1","tag-c-net"],"_links":{"self":[{"href":"https:\/\/appbay.org\/index.php?rest_route=\/wp\/v2\/posts\/3132","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/appbay.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/appbay.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/appbay.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/appbay.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3132"}],"version-history":[{"count":10,"href":"https:\/\/appbay.org\/index.php?rest_route=\/wp\/v2\/posts\/3132\/revisions"}],"predecessor-version":[{"id":3178,"href":"https:\/\/appbay.org\/index.php?rest_route=\/wp\/v2\/posts\/3132\/revisions\/3178"}],"wp:attachment":[{"href":"https:\/\/appbay.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3132"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/appbay.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3132"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/appbay.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3132"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}