Click here to Skip to main content
13,050,429 members (79,065 online)
Click here to Skip to main content
Add your own
alternative version

Stats

286.2K views
144 bookmarked
Posted 26 May 2004

Special QuickWatch for a DataSet

, 26 May 2004
Rate this:
Please Sign up or sign in to vote.
A VS.NET add-in to know the content of the any dataset during debugging.

Sample Image - Article.gif

Introduction

I am working on an ERP that is dealing with datasets a lot, and every time I need to know the contents of the dataset during debugging I try to make a quick watch but it has caused me headaches so I decided to make my own dataset quick watch.

How does it work?

I wrote my code using C#. I started by creating an Extensibility Projects from VS.NET's New Project menu. The wizard shows up and now the main idea behind this addin is how to pass an object from the VS.NET debug mode to the add-in. I did a lot of search but I did not find anything. The only way to know what is going in the debug mode is to use DTE.Debugger.GetExpression.

How did I insert my button in the context menu?

The wizard adds the created button (Command) in the Tools menu so I need to change the Tools to the context menu and to do that I replaced the Tools with Code Window, noting that the status for the command is (int)vsCommandStatus.vsCommandStatusUnsupported +(int)vsCommandStatus.vsCommandStatusInvisible to show it just when I need it:

// add the command to the right click context menu 
// note that when I insert the command it's inserted disabled
// "(int)vsCommandStatus.vsCommandStatusUnsupported +
// (int)vsCommandStatus.vsCommandStatusInvisible"

Command command = commands.AddNamedCommand ( addInInstance, DSWatchNode ,
        DataSet Quick Watch, DataSet Quick Watch, true, 60, ref contextGUIDS,
        (int)vsCommandStatus.vsCommandStatusUnsupported +
        (int)vsCommandStatus.vsCommandStatusInvisible ); 
CommandBar commandBar = (CommandBar)commandBars[Code Window]; 
CommandBarControl commandBarControl = command.AddControl(commandBar, 1); 
I have found a great article talking about addin and context menu in code project written by Erick Sgarbi called strongly typed collection and it was very useful

How to know if the selected test is a dataset?

After capturing the selected text i can use it as an expression in the Debugger.GetExpression() method of the application and evaluate anything I want. Now I will try to cast the selected text to dataset by evaluating the following:

string fileExtintion;
TextSelection _TextSelection;

_TextSelection = (TextSelection) applicationObject.ActiveDocument.Selection;

str = _TextSelection.Text;

fileExtintion=applicationObject.ActiveDocument.FullName.Substring(
                      applicationObject.ActiveDocument.FullName.Length-2 ) ;

switch(fileExtintion.ToLower() )
    {
    case "cs":
        isDataSetExpression="(System.Data.DataSet)"+str+".Tables";
        getXmlExpression="((System.Data.DataSet)"+str+").GetXml()";
        break;

    case"vb":
        isDataSetExpression="ctype("+ str +",System.Data.DataSet).Tables";
        getXmlExpression="ctype("+ str +",System.Data.DataSet).GetXml()";
        break;
    }

//cast the selcted text to dataset 
expr = debugger.GetExpression(isDataSetExpression,true,500);

if (expr.Value.IndexOf("error:")>-1)
{
    System.Windows.Forms.MessageBox.Show("This is not a DataSet!");
    return;
}

If the expr object does not have error message it will be a dataset:

if (expr.Value.IndexOf(error:)>-1) 
{
    System.Windows.Forms.MessageBox.Show(this is not DataSet!!);
    return;
} 

How to get the content of the dataset?

I could not get the object from the debugging project so I have to know the selected dataset XML contents by evaluating selectetDataSet.GetXML.

Using the code

Run the add-in setup file and after installing the add-in you will be able to watch any dataset by selecting it in the debug mode and choosing "DataSet Quick Watch" from right-click menu.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

Share

About the Author

mohammed barqawi
Web Developer
Jordan Jordan
web developer
email : mohammed.barqawi AT gmail.com

You may also be interested in...

Comments and Discussions

 
GeneralVery Nice & Useful Tool Pin
AMIT_BHAGAT24-Dec-14 1:38
memberAMIT_BHAGAT24-Dec-14 1:38 
GeneralMy vote of 5 Pin
AMIT_BHAGAT24-Dec-14 1:33
memberAMIT_BHAGAT24-Dec-14 1:33 
QuestionHow to install add-on? Pin
thanhtam2324-Feb-12 3:11
memberthanhtam2324-Feb-12 3:11 
GeneralGreat little tool Pin
Member 388061210-Sep-09 0:30
memberMember 388061210-Sep-09 0:30 
GeneralProblems with DsWatch in .net 2002 Pin
stvan21-May-09 8:38
memberstvan21-May-09 8:38 
GeneralWoW!!!! Pin
pinkchand4-Apr-07 6:23
memberpinkchand4-Apr-07 6:23 
GeneralProblem.................. Pin
fadee2-Aug-06 20:57
memberfadee2-Aug-06 20:57 
GeneralRe: Problem.................. Pin
zipperle6-Sep-06 21:36
memberzipperle6-Sep-06 21:36 
GeneralRe: Problem.................. Pin
fadee7-Sep-06 2:32
memberfadee7-Sep-06 2:32 
GeneralRe: Problem.................. Pin
zipperle10-Sep-06 20:56
memberzipperle10-Sep-06 20:56 
GeneralRe: Problem.................. Pin
fadee7-Sep-06 2:35
memberfadee7-Sep-06 2:35 
QuestionHow to use the add-in as non-administrator account Pin
Boudino22-Jun-06 23:21
memberBoudino22-Jun-06 23:21 
GeneralIt does not work at all Pin
Ihor Bobak1-Dec-05 9:04
memberIhor Bobak1-Dec-05 9:04 
GeneralRe: It does not work at all Pin
Mika25-Apr-06 1:07
memberMika25-Apr-06 1:07 
GeneralRe: It does not work at all Pin
Gerardo_19788-May-06 22:08
memberGerardo_19788-May-06 22:08 
GeneralRe: It does not work at all Pin
Mika8-May-06 23:11
memberMika8-May-06 23:11 
GeneralRe: It does not work at all Pin
Gerardo_19789-May-06 5:14
memberGerardo_19789-May-06 5:14 
QuestionHow to use in VS2005 RTM Pin
groundie19-Nov-05 10:46
membergroundie19-Nov-05 10:46 
AnswerRe: How to use in VS2005 RTM Pin
fcogarrido27-Dec-05 3:57
memberfcogarrido27-Dec-05 3:57 
GeneralRe: How to use in VS2005 RTM Pin
fcogarrido27-Dec-05 4:19
memberfcogarrido27-Dec-05 4:19 
GeneralRe: How to use in VS2005 RTM Pin
jason@myveryownwebsite.com24-Jan-06 6:46
memberjason@myveryownwebsite.com24-Jan-06 6:46 
GeneralRe: How to use in VS2005 RTM Pin
christianArg8-Apr-08 3:26
memberchristianArg8-Apr-08 3:26 
GeneralGood Job Pin
Hamrosh ....:)21-Oct-05 21:44
sussHamrosh ....:)21-Oct-05 21:44 
GeneralGreat Job! Pin
Gerald Gibson Jr10-Oct-05 6:29
memberGerald Gibson Jr10-Oct-05 6:29 
GeneralAnother fix - columns with all-null values disappeared Pin
Uri Dor25-Sep-05 1:27
memberUri Dor25-Sep-05 1:27 
Generalproposed fix for "root invalid " error Pin
Uri Dor21-Sep-05 22:38
memberUri Dor21-Sep-05 22:38 
GeneralWant your advise Pin
Mo7ammed_Farid15-Jul-05 5:39
sussMo7ammed_Farid15-Jul-05 5:39 
GeneralGreat Tool... Pin
fadee8-Apr-05 22:49
memberfadee8-Apr-05 22:49 
QuestionFour Sex's? Pin
Magadass30-Mar-05 9:05
memberMagadass30-Mar-05 9:05 
AnswerRe: Four Sex's? Of course! Pin
dnh30-Mar-05 9:55
memberdnh30-Mar-05 9:55 
AnswerRe: Four Sex's? Pin
mohammed barqawi1-Apr-05 18:40
membermohammed barqawi1-Apr-05 18:40 
QuestionHow's it work? Pin
Michael Wagner29-Oct-04 8:39
memberMichael Wagner29-Oct-04 8:39 
GeneralDebug doesn't work at all :( Pin
binolino17-Oct-04 23:50
memberbinolino17-Oct-04 23:50 
GeneralRe: Debug doesn't work at all :( Pin
mohammed barqawi19-Oct-04 7:53
membermohammed barqawi19-Oct-04 7:53 
GeneralRe: Debug doesn't work at all :( Pin
binolino19-Oct-04 8:25
memberbinolino19-Oct-04 8:25 
QuestionGreat Job ! How about C++ ? Pin
srinup8-Oct-04 19:12
membersrinup8-Oct-04 19:12 
GeneralTyped DataSet Pin
cSharpBastard6-Oct-04 1:59
membercSharpBastard6-Oct-04 1:59 
GeneralRe: Typed DataSet Pin
mohammed barqawi6-Oct-04 3:15
membermohammed barqawi6-Oct-04 3:15 
GeneralRe: Typed DataSet Pin
cSharpBastard6-Oct-04 4:50
membercSharpBastard6-Oct-04 4:50 
QuestionDoes this work with ASP.NET programs? Pin
Jefferys19-Sep-04 8:02
memberJefferys19-Sep-04 8:02 
AnswerRe: Does this work with ASP.NET programs? Pin
Jefferys19-Sep-04 11:18
memberJefferys19-Sep-04 11:18 
GeneralDataTable view Pin
Jan Sotola26-Aug-04 22:46
sussJan Sotola26-Aug-04 22:46 
GeneralRe: DataTable view Pin
Anonymous15-Nov-04 5:10
sussAnonymous15-Nov-04 5:10 
GeneralRe: DataTable view Pin
Luis Alonso Ramos30-May-05 7:52
memberLuis Alonso Ramos30-May-05 7:52 
GeneralRe: DataTable view Pin
José Joye15-Jun-05 19:53
memberJosé Joye15-Jun-05 19:53 
AnswerRe: DataTable view Pin
Fabrizzio6-Jul-07 4:29
memberFabrizzio6-Jul-07 4:29 
GeneralXML Quick Watch... Pin
benny 2k129-Jul-04 23:19
memberbenny 2k129-Jul-04 23:19 
GeneralProblem With GetExpression and Speed Pin
Haiping Jia27-Jul-04 9:44
memberHaiping Jia27-Jul-04 9:44 
GeneralRe: Problem With GetExpression and Speed Pin
mohammed barqawi9-Jul-04 21:40
membermohammed barqawi9-Jul-04 21:40 
GeneralRe: Problem With GetExpression and Speed Pin
Haiping Jia12-Jul-04 5:50
memberHaiping Jia12-Jul-04 5:50 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Terms of Use | Mobile
Web02 | 2.8.170713.1 | Last Updated 27 May 2004
Article Copyright 2004 by mohammed barqawi
Everything else Copyright © CodeProject, 1999-2017
Layout: fixed | fluid