I was headed to REI after work, but managed to miss my exit so I had to go north on I-25. The 58th Ave. Southbound exit was closed due to a semi roll-over (would have been an intersting picture).Monday, August 27, 2007
Soda Pop Relics
I was headed to REI after work, but managed to miss my exit so I had to go north on I-25. The 58th Ave. Southbound exit was closed due to a semi roll-over (would have been an intersting picture).Wednesday, August 8, 2007
Enabling XSLT scripting in .NET
By default, a .NET XslCompiledTransform does not allow for script execution within an XSL document due to security restrictions. As a result, it is necessary to enable scripting as follows:
transform = new XslCompiledTransform();
settings = new XsltSettings();
stream = new MemoryStream();
settings.EnableScript = true;
transform.Load(transformFilePath, settings, null);
transform.Transform(inputXml, null, stream);
Detailed Article:
http://msdn2.microsoft.com/en-us/library/wk7yxab1.aspx
transform = new XslCompiledTransform();
settings = new XsltSettings();
stream = new MemoryStream();
settings.EnableScript = true;
transform.Load(transformFilePath, settings, null);
transform.Transform(inputXml, null, stream);
Detailed Article:
http://msdn2.microsoft.com/en-us/library/wk7yxab1.aspx
SQL Server Search and Replace
This is a stored procedure I found online (http://vyaskn.tripod.com/sql_server_search_and_replace.htm) that seaches and replaces a string within all columns of a given database.
CREATE PROC SearchAndReplace
(
@SearchStr nvarchar(100),
@ReplaceStr nvarchar(100)
)
AS
BEGIN
-- Copyright © 2002 Narayana Vyas Kondreddi. All rights reserved.
-- Purpose: To search all columns of all tables for a given search string and replace it with another string
-- Written by: Narayana Vyas Kondreddi
-- Site: http://vyaskn.tripod.com
-- Tested on: SQL Server 7.0 and SQL Server 2000
-- Date modified: 2nd November 2002 13:50 GMT
SET NOCOUNT ON
DECLARE @TableName nvarchar(256), @ColumnName nvarchar(128), @SearchStr2 nvarchar(110), @SQL nvarchar(4000), @RCTR int
SET @TableName = ''
SET @SearchStr2 = QUOTENAME('%' + @SearchStr + '%','''')
SET @RCTR = 0
WHILE @TableName IS NOT NULL
BEGIN
SET @ColumnName = ''
SET @TableName =
(
SELECT MIN(QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME))
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE'
AND QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME) > @TableName
AND OBJECTPROPERTY(
OBJECT_ID(
QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME)
), 'IsMSShipped'
) = 0
)
WHILE (@TableName IS NOT NULL) AND (@ColumnName IS NOT NULL)
BEGIN
SET @ColumnName =
(
SELECT MIN(QUOTENAME(COLUMN_NAME))
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = PARSENAME(@TableName, 2)
AND TABLE_NAME = PARSENAME(@TableName, 1)
AND DATA_TYPE IN ('char', 'varchar', 'nchar', 'nvarchar')
AND QUOTENAME(COLUMN_NAME) > @ColumnName
)
IF @ColumnName IS NOT NULL
BEGIN
SET @SQL= 'UPDATE ' + @TableName +
' SET ' + @ColumnName
+ ' = REPLACE(' + @ColumnName + ', '
+ QUOTENAME(@SearchStr, '''') + ', ' + QUOTENAME(@ReplaceStr, '''') +
') WHERE ' + @ColumnName + ' LIKE ' + @SearchStr2
EXEC (@SQL)
SET @RCTR = @RCTR + @@ROWCOUNT
END
END
END
SELECT 'Replaced ' + CAST(@RCTR AS varchar) + ' occurence(s)' AS 'Outcome'
END
CREATE PROC SearchAndReplace
(
@SearchStr nvarchar(100),
@ReplaceStr nvarchar(100)
)
AS
BEGIN
-- Copyright © 2002 Narayana Vyas Kondreddi. All rights reserved.
-- Purpose: To search all columns of all tables for a given search string and replace it with another string
-- Written by: Narayana Vyas Kondreddi
-- Site: http://vyaskn.tripod.com
-- Tested on: SQL Server 7.0 and SQL Server 2000
-- Date modified: 2nd November 2002 13:50 GMT
SET NOCOUNT ON
DECLARE @TableName nvarchar(256), @ColumnName nvarchar(128), @SearchStr2 nvarchar(110), @SQL nvarchar(4000), @RCTR int
SET @TableName = ''
SET @SearchStr2 = QUOTENAME('%' + @SearchStr + '%','''')
SET @RCTR = 0
WHILE @TableName IS NOT NULL
BEGIN
SET @ColumnName = ''
SET @TableName =
(
SELECT MIN(QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME))
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE'
AND QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME) > @TableName
AND OBJECTPROPERTY(
OBJECT_ID(
QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME)
), 'IsMSShipped'
) = 0
)
WHILE (@TableName IS NOT NULL) AND (@ColumnName IS NOT NULL)
BEGIN
SET @ColumnName =
(
SELECT MIN(QUOTENAME(COLUMN_NAME))
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = PARSENAME(@TableName, 2)
AND TABLE_NAME = PARSENAME(@TableName, 1)
AND DATA_TYPE IN ('char', 'varchar', 'nchar', 'nvarchar')
AND QUOTENAME(COLUMN_NAME) > @ColumnName
)
IF @ColumnName IS NOT NULL
BEGIN
SET @SQL= 'UPDATE ' + @TableName +
' SET ' + @ColumnName
+ ' = REPLACE(' + @ColumnName + ', '
+ QUOTENAME(@SearchStr, '''') + ', ' + QUOTENAME(@ReplaceStr, '''') +
') WHERE ' + @ColumnName + ' LIKE ' + @SearchStr2
EXEC (@SQL)
SET @RCTR = @RCTR + @@ROWCOUNT
END
END
END
SELECT 'Replaced ' + CAST(@RCTR AS varchar) + ' occurence(s)' AS 'Outcome'
END
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"]);
}
}
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));
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();
}
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();
}
Tuesday, June 26, 2007
Design time databinding to a control within an ItemTemplate
This is a kind of a hack, but comes in handy for certain situations such as assigning a data value to a control (i.e. ASP:HiddenField 'Value' attribute) contained within an ItemTemplate when binding in the code-behind is not feasible.
Value='<%# Eval("data_column_name") %> '
Value='
Subscribe to:
Posts (Atom)
