First, your print button can be an ASP.NET Web Server control, or not. Thinking it over, it might be good to use one, since then you can run both client and server-side code for it.
Let's talk about client-side first. You need to accomplish two things:
1) Open a print dialog box when the button is clicked.
2) Pass a value back to the server code that indicates the user clicked that button.
You accomplish the first task using the JavaScript window.print() method. You accompish the second task by setting the value of a hidden form element. You can do both tasks in a single JavaScript function. Here's a first attempt at what the code might look like:
<html>
<head>
<title>JavaScript Sample by tgreer</title>
<script type="text/javascript">
function printMe()
{
window.print();
document.getElementById("printed").value = "YES";
document.getElementById("myForm").submit();
}
</script>
</head>
<body>
<form id="myForm">
<input type="button" value="Print me" onclick="printMe();" />
<input type="hidden" id="printed" />
</form>
</body>
</html>
Now, in any traditional web development system, that would be pretty much it. The user would click the button, which would fire the script. The script opens the print dialog box, sets a hidden form element value, and submits the form.
The server code would parse the Request object to see if "printed=YES", and if so, do whatever it is you want to do.
ASP.NET is NOT traditional web development, however. For one, your "onclick" code for the button control refers to server code. That would be your audit code that checked for "printed=YES".
To get a client-side click event registered to a server control, you have to do:
myServerControl.Attributes.Add("onclick","printMe();");
I don't know VB.NET, that's C# syntax above. I assume it's very similar.
I hope that helps. Questions about the client-side portion you can ask in this forum. For more details on the server-side code, post in the ASP.NET forum.