Monday, July 16, 2007

Assigning and accessing multiple values for DataKeyNames on a GridView

Multiple DB column values can be assigned to the DataKeyNames attribute of a GridView, and accessed in the code-behind as follows:

aspx markup:
asp:GridView ID="gv1" runat="server"
DataSourceID="ods1"
DataKeyNames="pk_parent_id, fk_child_id"
OnRowDataBound="gv1_RowDataBound"

code-behind:

protected void gv1_RowDataBound(object sender, GridViewRowEventArgs e)
{
int childId = (int)(gv1.DataKeys[e.Row.DataItemIndex].Values["fk_child_id"]);
}


protected void btn1_Click(object sender, EventArgs e)
{
foreach (GridViewRow row in gv1.Rows)
{
int childId = (int)(gv1.DataKeys[row.RowIndex].Values["fk_child_id"]);
}
}

Wednesday, July 11, 2007

Getting back a DOUBLE when dividing two integer values

C# returns back a 0 to a double when dividing two integer values. Therefore, we have to cast as follows:

double dblResult = (double)(intValue1) / (double)(intValue2));

Monday, July 2, 2007

Centering a pop-up window in Javascript

I come across this a lot, but always seem to forget some little detail... so I'm putting it here as a reference:

function wopen(url, name, w, h)
{
// Fudge factors for window decoration space.
// In my tests these work well on all platforms & browsers.
w += 32;
h += 96;
wleft = (screen.width - w) / 2;
wtop = (screen.height - h) / 2;
// IE5 and other old browsers might allow a window that is
// partially offscreen or wider than the screen. Fix that.
// (Newer browsers fix this for us, but let's be thorough.)
if (wleft < 0) {
w = screen.width;
wleft = 0;
}
if (wtop < 0) {
h = screen.height;
wtop = 0;
}
var win = window.open(url,
name,
'width=' + w + ', height=' + h + ', ' +
'left=' + wleft + ', top=' + wtop + ', ' +
'location=no, menubar=no, ' +
'status=no, toolbar=no, scrollbars=no, resizable=no');
// Just in case width and height are ignored
win.resizeTo(w, h);
// Just in case left and top are ignored
win.moveTo(wleft, wtop);
win.focus();
}