sql >> データベース >  >> Database Tools >> SSMS

SSMSのグリッド制御

    SSMSグリッドはC++ではなく、ListViewでもDataGridでもありません。また、Windowsネイティブコントロールを使用せず、GridControlという名前のカスタム.NETコントロールです。 (Microsoft.SqlServer.Management.UI.Grid 名前空間)Microsoft.SqlServer.GridControl.dllという名前のアセンブリに属します。

    さまざまな場所で見つけることができます: GAC %ProgramFiles(x86)%\Common Files\Microsoft Shared\SQL Server Developer Tools%ProgramFiles(x86)%\Microsoft SQL Server Management Studio 18\Common7\IDE 、VisualStudioファイルなどで

    これは再配布可能なバイナリAFAIKではないため、出荷することは想定されておらず、文書化されておらず、他のグリッドのようにフル機能のグリッドでもありません。ただし、ご存知のとおり、軽量であり、基盤となるデータアクセスと同じくらい高速です。

    試してみたい場合は、Winforms C#の小さなサンプル(10000 x 256グリッド、すぐに開く250万個のセル)を使用方法を示します。

    using System;
    using System.Drawing;
    using System.Windows.Forms;
    using Microsoft.SqlServer.Management.UI.Grid;
    
    namespace WindowsFormsApp1
    {
        public partial class Form1 : Form
        {
            private GridControl _control = new GridControl();
    
            public Form1()
            {
                InitializeComponent();
    
                for (int i = 0; i < 256; i++)
                {
                    _control.AddColumn(new GridColumnInfo { HeaderType = GridColumnHeaderType.Text, IsUserResizable = true });
                    _control.SetHeaderInfo(i, "Column " + i, null);
                }
    
                _control.Dock = DockStyle.Fill;
                _control.GridStorage = new GridStorage();
                Controls.Add(_control);
            }
        }
    
        // represents a datasource
        public class GridStorage : IGridStorage
        {
            public long EnsureRowsInBuf(long FirstRowIndex, long LastRowIndex)
            {
                return NumRows(); // pagination, dynamic load, virtualization, could happen here
            }
    
            public void FillControlWithData(long nRowIndex, int nColIndex, IGridEmbeddedControl control)
            {
                // for cell edition
                control.SetCurSelectionAsString(GetCellDataAsString(nRowIndex, nColIndex));
            }
    
            public string GetCellDataAsString(long nRowIndex, int nColIndex)
            {
                // get cell data
                return nRowIndex + " x " + nColIndex;
            }
    
            public int IsCellEditable(long nRowIndex, int nColIndex)
            {
                return 1; // 1 means yes, 0 means false
            }
    
            public long NumRows()
            {
                return 10000;
            }
    
            public bool SetCellDataFromControl(long nRowIndex, int nColIndex, IGridEmbeddedControl control)
            {
                // when a cell has changed, you're supposed to change your data here
                return true;
            }
    
            public Bitmap GetCellDataAsBitmap(long nRowIndex, int nColIndex) => throw new NotImplementedException();
            public void GetCellDataForButton(long nRowIndex, int nColIndex, out ButtonCellState state, out Bitmap image, out string buttonLabel) => throw new NotImplementedException();
            public GridCheckBoxState GetCellDataForCheckBox(long nRowIndex, int nColIndex) => throw new NotImplementedException();
        }
    }
    

    これがその様子です。きちんとしたコンピュータで、速度を落とすことなくスクロールできます。




    1. phpMyAdminを使用してデータベースを検索する

    2. 変数を介したmysqli_query入力

    3. 設定ファイルでのPhpMyAdminエラー

    4. データベース/サーバーのセットアップの転送中にポリッシュ文字セットでエンコードエラーが発生しました