|
Craigpt wrote: i can't find a way to check whether or not this page is a popup (window.opener != null) or not (window.opener == null) using server side code.
You can't. The browser doesn't tell the server where the page will be displayed, so the server simply doesn't know.
If you put a value in the querystring that reflects how the page is used, the server can check that value.
---
single minded; short sighted; long gone;
|
|
|
|
|
Guffa wrote: The browser doesn't tell the server where the page will be displayed, so the server simply doesn't know.
Ok thanks, that's what i needed to know. I remembered the popup window already had querystrings in the URL so i just used the presence of those to decide.
|
|
|
|
|
Wouldnt' this be more appropriate in the ASP.NET forum?
|
|
|
|
|
Ya, it was a toss-up for me, but i decided that in the ASP.net forum i ran the risk of getting a VB.Net answer, and if code was available i wanted it in C#
|
|
|
|
|
There isn't that much difference and both can easily be translated between the other, besides you could always just ask for it to be given in C#.
|
|
|
|
|
Hi everybody!!!
How I can use ErrorProvider in DataGridView??? (It is for notice when the input data in some field is failur. In this case you mast see blinking of ErrorProvider in some field)
|
|
|
|
|
Use the ErrorText property:
<code>private void dgv_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
DataGridView dgv = sender as DataGridView;
if (dgv.IsCurrentCellInEditMode)
{
dgv.Rows[e.RowIndex].ErrorText = "You made an error";
}
}
|
|
|
|
|
Thak you for help! But I want to put ErrorProvider in field of DataGridView! So I add:
<br />
private void dataGridView_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)<br />
{<br />
DataGridView dgv = sender as DataGridView;<br />
if (dgv.IsCurrentCellInEditMode)<br />
{<br />
dgv.Rows[e.RowIndex].Cells[0].ErrorText = "You made an error!"; <br />
}<br />
} <br />
|
|
|
|
|
Check this code.
Two questions:
1. After opening the serial port do I need to worry about closing the port as when I return (leave the using scope) the object will automatically be disposed?
2. If the code enters the catch block will the serial port object automatically be disposed after leaving the using scope?
Thanks!
public static bool IsPortInUse(string portName)
{
try
{
using(SerialPort sp = new SerialPort(portName))
{
sp.Open();
return false;
}
}
catch (UnauthorizedAccessException e)
{
return true;
}
}
|
|
|
|
|
the "using" scope automatically calls the dispose method (if available) upon leaving, whether through normal means or if it errors
|
|
|
|
|
Thanks for your reply. So what I'm doing is ok? i.e the serial port will be disposed in all cases when it leaves the using scope?
|
|
|
|
|
as far as i can tell, and my coworker agrees, it should work great
|
|
|
|
|
Cheers!
|
|
|
|
|
No problem! Happy coding!
|
|
|
|
|
If the code execution leaves the using scope for any reason, the object's Dispose method is automatically called and the object free'd.
|
|
|
|
|
Thanks for your reply. I was pretty sure that was right. Hey, but if an object doesn't implement IDisposable is there any point in using Using?
|
|
|
|
|
TheTinSoldier wrote: if an object doesn't implement IDisposable is there any point in using Using?
If it doesn't implement IDisposable, you will get a compiler error if you try to use it in a using block.
|
|
|
|
|
|
It actually compiles to something like this:
public static bool IsPortInUse(string portName) {
try {
SerialPort sp = null;
try {
sp = new SerialPort(portName);
sp.Open();
return false;
} catch (Exception ex) {
throw ex;
} finally {
if (sp != null) {
sp.Dispose();
}
}
} catch (UnauthorizedAccessException e) {
return true;
}
}
Which will automatically dispose, even if an exception occurs.
|
|
|
|
|
That makes it clear! Thanks!
|
|
|
|
|
Some comments:
1. you dont need to open a port to know whether it is already open; use the IsOpen property.
2. I would have nested the try and using blocks the other way around, but I dont think
it matters much.
3. I did not find in MSDN doc a statement indicating that Dispose() also calls Close();
lets hope it does. Other classes have either a Dispose() or a Close() method but not
both (of course you could Open() again after Close, not after Dispose).
4. SerialPort.Close (or Dispose?) does not immediately close the port, so when soon followed
by a SerialPort.Open that open may fail (see second remark in MSDN doc on Close).
As a result, while your method name sounds like it is only providing information,
you are actually changing its state (albeit temporarily).
|
|
|
|
|
It does not also call Close() , only Dispose() . But most things do call Close() in their implementation of Dispose() .
|
|
|
|
|
Hi,
BoneSoft wrote: It does not also call Close(), only Dispose().
I am afraid you misunderstood me; you seem to think I expected the using
statement to call both Close() and Dispose(). I know that is not the case.
What I said was: "I did not find in MSDN doc a statement indicating that Dispose()
also calls Close()".
I am using the using statement quite a lot, and propagating it where ever I can.
Regards
|
|
|
|
|
Actually Close calls Dispose . Take a look in reflector:
public class SerialPort : Component
{
public void Close()
{
this.Dispose(true);
}
protected override void Dispose(bool disposing)
{
if (disposing && this.IsOpen)
{
this.internalSerialStream.Flush();
this.internalSerialStream.Close();
this.internalSerialStream = null;
}
base.Dispose(disposing);
}
}
|
|
|
|
|
Hi Ed,
there must be a mistake somewhere; MSDN on SerialPort.Close explains:
1. Close() disposes of the internal streams (sounds OK)
2. you can Open() a port after it has been closed (cant be true if Close disposes of port)
|
|
|
|