C#: Get Parent Control with Generics

by Pieter Brinkman 27. April 2010 04:43

I use the following method to return a parent control of a specific type. This method is recursive and uses generics.

[code:c#]

private Control GetParentControl<T1>(Control control)
{
    if (control.Parent.GetType() == typeof(T1))
    {
        return control.Parent;
    }
    else
    {
        return GetParentControl<T1>(control.Parent);
    }
}

[/code]

Tags: , , , ,

ASP.Net | C# | Controls

MemoryStream to Byte Array (Byte[])

by Pieter Brinkman 19. April 2010 09:25

With the following code you can convert your MemoryStream to a Byte Array.

[code:c#]
//create new Bite Array
byte[] biteArray = new byte[memoryStream.Length];

//Set pointer to the beginning of the stream
memoryStream.Position = 0;

//Read the entire stream
memoryStream.Read(biteArray, 0, (int)memoryStream.Length);
[/code]

Tags: , ,

ASP.Net | C#

Gaatverweg.nl travelportal live

by Pieter Brinkman 7. April 2010 03:08

A few years after building the free travelblog site Globallog.nl in PHP. I started building a new version in .Net together with Mark. Although this was a joyful and educational experience, we never finished this project… Now a few years later I finished a new travelblog portal; Gaatverweg.nl.


Gaatverweg.nl is build with Wordpress MU (php) and uses multiple Wordpress plugins and a few custom build plugins.

Tags:

Portfolio

Create a Visual Studio add-in with contextmenu and selected text as input

by Pieter Brinkman 25. February 2010 09:58

Create a Visual Studio add-in with contextmenu and selected text as input

When working with a new way of storing settings in a database. I was frustrated how much work it was to check the value of setting from code. So I deceided to make my life a bit easier by creating a VS2008 contextmenu add-in. With this add-in I can select text within VS and use the value of the selected text within the add-in popup. The hardest part was figuring out how to create a contextmenu and how to use the selected text as input value.

In this blogpost I will show how to create a Visual Studio contextmenu add-in and pass the selected text to the pop-up. I’m not going to explain how to create an add-in you can easily find articles about this on MSDN or blogs (just try Google).

Now let’s get started. Create an new Visual Studio add-in project and add the following code to the OnConnetion Method within the Connect.cs. This code will insert add the contextmenu.


[code:c#]
_applicationObject = (DTE2)application;
CommandBars cBars = (CommandBars)_applicationObject.CommandBars;

CommandBar editorCommandBar = (CommandBar)cBars["Editor Context Menus"];
CommandBarPopup editPopUp = (CommandBarPopup)editorCommandBar.Controls["Code Window"];

Command command = commands.AddNamedCommand2(_addInInstance,
 "GetSetting", "Bekijk Setting", "Executes the command for test", true, 733, ref contextGUIDS,
 (int)vsCommandStatus.vsCommandStatusSupported + (int)vsCommandStatus.vsCommandStatusEnabled,
 (int)vsCommandStyle.vsCommandStylePictAndText,
 vsCommandControlType.vsCommandControlTypeButton);
[/code]


Then to get the selected text I use the following method within the Exec of the Connect.cs and pass the selected text (return value) to a property of a Windows Form pop-up.

[code:c#]
private string GetSelection()
{
    string setting = "";

    //Check active document
    if (_applicationObject.ActiveDocument != null)
    {
        //Get active document
        TextDocument objTextDocument = (TextDocument)_applicationObject.ActiveDocument.Object("");
        TextSelection objTextSelection = objTextDocument.Selection;

        if (!String.IsNullOrEmpty(objTextSelection.Text))
        {
 //Get selected text
            setting = objTextSelection.Text;
        }
    }
    return setting;
}
[/code]


Hope it helps.

Cheers,
Pieter

Tags: , , , ,

C# | Controls | Visual Studio

C#: Remove line from textfile

by Pieter Brinkman 26. January 2010 03:29

With the following code you can remove a line from a textfile (web.config). If the string is within a line the line will be removed.

[code:c#]

string configFile = @"C:\dev\web.config";
List<string> lineList = File.ReadAllLines(configFile).ToList();
lineList = lineList.Where(x => x.IndexOf("<!--") <= 0).ToList();
File.WriteAllLines(configFile, lineList.ToArray());

[/code]

 

Tags: , ,

ASP.Net | Linq | C#

Asp.Net: DataPager problem with Listview

by Pieter Brinkman 23. December 2009 06:48

When using the Datapager with a ListView I had the following problem. When clicking a paging button for the first time nothing happens.But when I click a button the second time, then the page from the first click loads.

I search the internet for a solution and found that you need to add some code to the OnPagePropertiesChanging event of the list view to reload the DataPager.

The following code is the solution to my problem. Including a fix that the data doesn't get loaded two times.

[code:c#]

private List<Product> productList;

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
        fillGrid();
}

private void fillGrid()
{
    if(productList == null)
        productList = getproducts();
    ListView1.DataSource = productList;
    ListView1.DataBind();
    DataPager1.DataBind();
}

public List<Product> getproducts()
{
    using (AdventureWrksDataContext db = new AdventureWrksDataContext())
    {
        return db.Products.ToList();
    }
}

protected void lvproducts_PagePropertiesChanging(object sender, PagePropertiesChangingEventArgs e)
{
    DataPager1.SetPageProperties(e.StartRowIndex, e.MaximumRows, false);
    fillGrid();
}

[/code]


You can download the solution (PagingExample.zip (83.05 kb))

Cheers,

Pieter

Tags: , ,

ASP.Net | Controls

Comments disabled

by Pieter Brinkman 23. December 2009 05:06

I disabled the comments because of the huge amounts of spam I'm receiving. So if you have any questions you can contact me trough linked-in.

Sorry for the inconvenience.

Tags:

TypeMock: Mock Unittest examples

by Pieter Brinkman 21. October 2009 06:45

In this example I will show how to create a Unit Test with TypeMock.

First I have created some basic dummy classes for the example

[code:c#]

public sealed class ServiceFactory
{
    public static ExpireDateService CreateExpireDateService()
    {
        ExpireDateService expireDateService = new ExpireDateService();
        expireDateService.administration = new SqlAdministration("connectionstring");
        return expireDateService;
    }
}


/// <summary>
/// SqlAdministrion creates connection and managed queries with SQL
/// </summary>

public class SqlAdministration
{
    private static DateTime LoadParameterPrivate()
    {
        return DateTime.Parse("01-01-1980");

    }

    public SqlAdministration(string connectionString)
    {
        //Create connection to sql 
    }

    public static DateTime LoadParameter(string expireDateType)
    {
        //GET expireDate from Database:
         SqlAdministratie.LoadParameter("expireDateType");
        // Load Date from Private method for other mocking examples

        return LoadParameterPrivate();
    }
}

public class ExpireDateService
{
    public SqlAdministration administration;

    public DateTime GetDate(string expireDateType)
    {
        DateTime expireDate = SqlAdministration.LoadParameter(expireDateType);

        return expireDate;
    }
}

public class CheckDate
{
    public static bool CheckExpireDateBooking()
    {
        ExpireDateService expireDateService = ServiceFactory.CreateExpireDateService();
        DateTime expireDate = expireDateService.GetDate("expireDateDateFirst");
        return DateTime.Parse("01-01-2000") < expireDate;
    }
}

[/code]

With the following Unit test I will test the code written above. I don't want to change my code or add code for testing purpose. That's where Mocking comes in. With TypeMock I will mock the outcome of specified methods.

The first example is a standard unit test. No Mocking there.

[code:c#]

/// <summary>
/// Checks the expiredate from 'database' 01-01-1980
/// with a hardcoded date 01-01-2000
/// </summary>

[TestMethod()]
public void TestMethodWithoutTypeMock()
{
    Assert.IsFalse(CheckDate.CheckExpireDateBooking());

[/code]

 Now I want to mock the method GetDate to return a date specified by me (01-01-2010).

[code:c#]

/// <summary>
/// Checks the expiredate from database (01-01-1980)
/// with a hardcoded date provided by TypeMock (01-01-2010)
/// </summary>

[Isolated]
[TestMethod()]
public void TestMethodWithTypeMockIsolate()
{
    //Create a dummy version of the ExpireDateService object to use for Mocking

    ExpireDateService expireDateService = new ExpireDateService();
    expireDateService.administration = new SqlAdministration("dummyConnectionString");

    //Return the declared expireDateService when method CreateExpireDateService is called

    Isolate.WhenCalled(() => ServiceFactory.CreateExpireDateService())
        .WillReturn(expireDateService);

    //Isolate the call to method expireDateService.GetDate with parameter 'expireDateDateFirst' and return 01-01-2010

    Isolate.WhenCalled(() => expireDateService.GetDate("expireDateDateFirst"))
        .WillReturn(DateTime.Parse("01-01-2010"));

    Assert.IsTrue(CheckDate.CheckExpireDateBooking());
}

[/code]

For the latest example I wanted to Mock a Private method.

[code:c#]

/// <summary>
/// Checks the expiredate from database (01-01-1980)
/// with a hardcoded date provided by TypeMock on privatemethod(01-01-2010)
/// </summary>

[Isolated]
[TestMethod()]
public void TestMethodWithTypeMockIsolatePrivate()
{
    Isolate.NonPublic.WhenCalled(typeof(SqlAdministration), "LoadParameterPrivate")
        .WillReturn(DateTime.Parse("01-01-2010"));

    Assert.IsTrue(CheckDate.CheckExpireDateBooking());

[/code]

You can download the source here:
MockingWithTypeMockExampleSource.zip (44.47 kb)

Hope it helps.

Cheers,

Pieter

Tags: , ,

ASP.Net

Asp.net: DateTime Eval String formatting

by Pieter Brinkman 24. September 2009 07:13

With the following code you can format a DateTime within a Databind.

[code:c#]

<%# DateTime.Parse(Eval("DateModified").ToString()).ToString("MM-dd-yyyy")%> 

[/code]

 

Tags: ,

ASP.Net

Realization corporate website hu.nl

by Pieter Brinkman 7. September 2009 03:27

For Evident Interactive I was Lead-developer on the hu.nl project. With a team of 5 professionals we build 23 websites in 5 months. All the websites where implemented within one instance of Sitecore CMS.

The websites containing Flash, Silverlight, GoogleMaps, Flick and Youtube.

The project was successfully realized within the deadline.

 

 

Tags: ,

Portfolio

TSQL: Nested Select with multiple results to one (comma separated) string

by Pieter Brinkman 25. August 2009 03:22

For this example I will use the default asp.net Membership tables.

Let say: I need to return all users with their roles (comma separated) in one query. After a long time Googling I found the following solution.

[code:tsql]

select
  UserName,
  (select roles.RoleName + ', '
    FROM aspnet_Roles roles
    join aspnet_UsersInRoles usersInRole on roles.RoleId = usersInRole.RoleId
    WHERE usersInRole.UserId = aspUser.UserId
    for xml path('')) as roles
from
    aspnet_Users aspUser

[/code]

Don't know if this is the best way, but it works.

Tags: , ,

TSQL

TSQL: Use common table expression

by Pieter Brinkman 23. August 2009 03:04

With common table expressions you can save the results to a temporary result set and use this results set for other queries.

[code:tsql]

WITH temporaryNamedResultSet
AS
(
  select UserName from aspnet_Users
)
select * from temporaryNamedResultSet

[/code]

 

Tags: , ,

TSQL

Powered by BlogEngine.NET 1.5.0.7
Theme by Mads Kristensen

About Me

My name is Pieter Brinkman I am a .NET Software Engineer for Achmea IT in De Meern, The Netherlands. My interests are mainly web applications created with ASP.NET, MSSQL and Silverlight.

Calendar

<<  September 2010  >>
MoTuWeThFrSaSu
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910

View posts in large calendar

RecentComments

Comment RSS

Most comments

club penguin cheats club penguin cheats
4 comments
us United States
Web Design Company Web Design Company
2 comments
Web design Web design
2 comments
gb United Kingdom