퇴근5분전

 

 

 SSMS에서 쿼리를 실행했을때 결과 그리드에 접근하기 위한 코드를 겨우 완성했다. ( 자료를 못찾는건지 ... 없는건지... )

 겨우 소스는

   // 참조 : http://www.tsingfun.com/html/2015/dev_0728/478.html

 

이 소스로 Addin 기능을 구현했었으나... 발견된 버그!

 

  쿼리를 두개 이상 실행했을 때 첫번째 그리드만 접근이 되어 헤더목록을 제대로 취득하지 못했다.

 

디버거 조사식으로 객체들을 쫒아다니며 겨우 찾았다 "FocusedGrid" 프로퍼티를 이용하여...

 

        /// <summary>
        /// 获取当前文档视图窗口中的DataGrid
        /// </summary>
        /// <returns></returns>
        public static IGridControl GetActiveGridControl()
        {
            try
            {
                SqlScriptEditorControl sqlEditorCtl = GetDocView() as SqlScriptEditorControl;

                object sqlResultsControl = GetNonPublicField(sqlEditorCtl, "m_sqlResultsControl");
                object gridResultsPage = GetNonPublicField(sqlResultsControl, "m_gridResultsPage");

                var focusedGrid = GetNonPublicProperty(gridResultsPage, "FocusedGrid");
                return focusedGrid as IGridControl;
            }
            catch (Exception e)
            {
                // Log
                return null;
            }
        }