SSMS
 sql >> Baza danych >  >> Database Tools >> SSMS

Sterowanie siecią w SSMS

Siatka SSMS nie jest C++, nie jest ListView ani DataGrid, nie używa natywnych kontrolek Windows, to "tylko" niestandardowa kontrolka .NET o nazwie GridControl (w Microsoft.SqlServer.Management.UI.Grid przestrzeni nazw) należącej do zestawu o nazwie Microsoft.SqlServer.GridControl.dll.

Możesz go znaleźć w różnych miejscach:w GAC , w %ProgramFiles(x86)%\Common Files\Microsoft Shared\SQL Server Developer Tools , w %ProgramFiles(x86)%\Microsoft SQL Server Management Studio 18\Common7\IDE , w plikach programu Visual Studio itp.

To nie jest redystrybucyjny binarny AFAIK, więc nie powinieneś go wysyłać, nie jest udokumentowany i nie jest to w pełni funkcjonalna siatka, jak inne. Jednak, jak się dowiedziałeś, jest lekki i może być szybki, tak szybki, jak podstawowy dostęp do danych.

Jeśli chcesz się z tym pobawić, oto mała próbka WinForm C# (siatka 10000 x 256, czyli 2,5 miliona komórek, które otwierają się natychmiast), która pokazuje, jak z niej korzystać:

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();
    }
}

Oto jak to wygląda. Możesz przewijać bez spowolnienia, na przyzwoitym komputerze.




  1. DBeaver
  2.   
  3. phpMyAdmin
  4.   
  5. Navicat
  6.   
  7. SSMS
  8.   
  9. MySQL Workbench
  10.   
  11. SQLyog
  1. Wyniki SSMS jako klikalny link

  2. Usunąć datę/godzinę w skrypcie SQL wygenerowanym przy użyciu programu SSMS?

  3. Nieprawidłowa składnia w pobliżu „for” SQL Server

  4. Jak usunąć wpisy serwera na ekranie Połącz z serwerem programu SQL Server Management Studio?

  5. Zaktualizuj pole bitów sql w bazie danych