SSMS
 sql >> база данни >  >> Database Tools >> SSMS

Контрол на мрежата в SSMS

SSMS мрежата не е C++, не е ListView или DataGrid, не използва естествени контроли на Windows, това е "просто" персонализирана .NET контрола с име GridControlMicrosoft.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 , във файлове на Visual Studio и др.

Това не е преразпределяем двоичен AFAIK, така че не трябва да го изпращате, не е документиран и не е пълнофункционална мрежа като другите. Въпреки това, както разбрахте, той е лек и може да бъде бърз, толкова бърз, колкото и достъпът ви до основни данни.

Ако искате да играете с него, ето малка проба на Winforms C# (решетка 10000 x 256, която е 2,5 милиона клетки, които се отварят незабавно), която демонстрира как да го използвате:

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. DBeaver
  2.   
  3. phpMyAdmin
  4.   
  5. Navicat
  6.   
  7. SSMS
  8.   
  9. MySQL Workbench
  10.   
  11. SQLyog
  1. Резултатите от копиране и поставяне на Microsoft SQL Server в Excel не работят

  2. свийте всички“ или превключете контура в SQL Server Management Studio 2008

  3. Как мога да проверя дали даден SQL резултат съдържа символ за нов ред?

  4. проблем с опита за създаване на ssms добавка

  5. Intellisense не работи SSMS 2014