Translate
Thursday, December 12, 2013
Serializer helper
/// Helper class for serializing / deserializing
/// var helper=new XmlSerializerHelper();
/// object
public class XmlSerializerHelper
{
public Type _type;
public XmlSerializerHelper()
{
_type = typeof(T);
}
/// Returns serialized xml string
public string GetXml(object objectToSerialize)
{
if (objectToSerialize == null)
{
return string.Empty;
}
else
{
var stringWriter = new StringWriter();
XmlWriterSettings settings = new XmlWriterSettings();
settings.OmitXmlDeclaration = true;
settings.Indent = false;
using (XmlWriter writer = XmlWriter.Create(stringWriter, settings))
{
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add(string.Empty, string.Empty);
XmlSerializer xmlSerializer = new XmlSerializer(objectToSerialize.GetType());
xmlSerializer.Serialize(writer, objectToSerialize, ns);
return stringWriter.ToString();
}
}
}
/// Returns deserialized object instance from xml
/// xml string from data record
/// object T
public T GetObject(string xmlString)
{
T result;
var reader = new StringReader(xmlString);
XmlSerializer serializer = new XmlSerializer(_type);
result = (T)serializer.Deserialize(reader);
return result;
}
}
asp net Find all controls
private void GetControlList(ControlCollection controlCollection, List resultCollection) where T : Control
{
foreach (Control control in controlCollection)
{
if (control is T) // This is cleaner
resultCollection.Add((T)control);
if (control.HasControls())
GetControlList(control.Controls, resultCollection);
}
}
Page: PreInit
Control: Init
Page: Init
Page: InitComplete
Page: PreLoad
Page: Load
Control: Load
Page: LoadComplete
Page: PreRender
Control: PreRender
Page: PreRenderComplete
Page: SaveStateComplete
Page: RenderControl
Page: Render
Control: RenderControl
Control: Unload
Control: Dispose
Page: Unload
Page: Dispose
{
foreach (Control control in controlCollection)
{
if (control is T) // This is cleaner
resultCollection.Add((T)control);
if (control.HasControls())
GetControlList(control.Controls, resultCollection);
}
}
Page: PreInit
Control: Init
Page: Init
Page: InitComplete
Page: PreLoad
Page: Load
Control: Load
Page: LoadComplete
Page: PreRender
Control: PreRender
Page: PreRenderComplete
Page: SaveStateComplete
Page: RenderControl
Page: Render
Control: RenderControl
Control: Unload
Control: Dispose
Page: Unload
Page: Dispose
Tuesday, November 19, 2013
Image Button CommandArgument on GridView
Use the CommandArgument property of an action button on a GridViewRow to facilitate record actions.
<asp:imagebutton commandargument="<%# Bind("RecordGuid")" commandname="EDIT_RECORD" height="12" id="imgEdit" imageurl="~/Images/edit.png" onclick="btnEditRequest_Click" runat="server" tooltip="Edit Request" width="12"></asp:imagebutton>
switch (btn.CommandArgument)
{
case "EDIT_RECORD":
break;
case "DELETE_RECORD":
break;
case "VIEW_RECORD":
if (recordGuid.ToString() != "00000000-0000-0000-0000-000000000000")
{
string url = "NonexpenditureTransferDetail.aspx?id=" + recordGuid.ToString();
Response.Redirect(url, false);
Context.ApplicationInstance.CompleteRequest();
}
break;
}
Friday, November 15, 2013
Use XQuery to replace Xml element value
DECLARE @newVal varchar(50);
SELECT @newVal = 'A40AA80B-74D3-4357-961E-1A4C9E94651F';
-- Get xml contents
DECLARE @myDoc xml = (SELECT [DATA_XML] FROM [dbo].[TABLE] WHERE ([GUID] = @newVal));
-- Check contents
SELECT @myDoc
-- Replace value of
SET @myDoc.modify('delete (/root/RecordGuid[1])')
SET @myDoc.modify('insert{sql:variable("@newVal")} as first into (/root)[1] ') ;
-- Update record
UPDATE [iMARTDB].[dbo].[TABLE]
SET [DATA_XML] = @myDoc
WHERE ([GUID] = @newVal);
-- Verify
SELECT [DATA_XML] FROM [dbo].[TABLE] WHERE ([GUID] = @newVal);
SELECT @newVal = 'A40AA80B-74D3-4357-961E-1A4C9E94651F';
-- Get xml contents
DECLARE @myDoc xml = (SELECT [DATA_XML] FROM [dbo].[TABLE] WHERE ([GUID] = @newVal));
-- Check contents
SELECT @myDoc
-- Replace value of
SET @myDoc.modify('delete (/root/RecordGuid[1])')
SET @myDoc.modify('insert
-- Update record
UPDATE [iMARTDB].[dbo].[TABLE]
SET [DATA_XML] = @myDoc
WHERE ([GUID] = @newVal);
-- Verify
SELECT [DATA_XML] FROM [dbo].[TABLE] WHERE ([GUID] = @newVal);
Labels:
Transact-Sql,
XQuery
Monday, October 7, 2013
Send bytes to web client as download
//Setup HttpResponse headers
Response.Clear();
Response.ClearHeaders();
Response.ContentType = "mime-type";
Response.AddHeader("Content-Disposition", "attachment;filename=a_filename.ext");
// Put pdf in OutputStream
//pdf.Save(Response.OutputStream);
// Put image in OutputStream
//bitmap.Save(Response.OutputStream);
// Put bytes in OutputStream
//Response.OutputStream.Write(Bytes[], 0, Bytes.Length);
//Response.BinaryWrite(Bytes[]);
// Put string in OutputStream
//Response.Write(System.Text.Encoding.ASCII.GetString(Bytes[]));
// Send to client
Response.End();
//Response.Flush();
Retrieve File / Sql Contents
// convert StreamReader to string
string path = Server.MapPath("filename");
if (System.IO.File.Exists(path)
{
System.IO.StreamReader streamReader = new System.IO.StreamReader(path);
//System.IO.StreamReader streamReader = System.IO.File.OpenText(path);
//System.IO.FileInfo fi = new System.IO.FileInfo(path);
//System.IO.StreamReader streamReader = fi.OpenText();
}
// place string here
string html = streamReader.ReadToEnd();
// BinaryReader
// Determine buffer size
//System.IO.FileInfo fi = new System.IO.FileInfo(path);
//long bufLen = fi.Length
int chunkSize = 1024;
byte[] buffer = new byte[chunkSize];
//byte[] buffer = new byte[bufLen];
using (System.IO.BinaryReader binaryRdr = new System.IO.BinaryReader(streamReader.BaseStream))
{
buffer = binaryReader.ReadBytes(chunkSize);
while (buffer.Length > 0)
{
buffer = binaryReader.ReadBytes(chunkSize);
}
/* For undetermined sizes
using (var ms = new MemoryStream())
{
streamReader.BaseStream.CopyTo(ms);
buffer = ms.ToArray();
}
*/
}
// SQL
System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection(connectionString);
System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand("select columns from Table");
System.Data.SqlClient.SqlDataReader dataRdr;
con.Open();
dataRdr = cmd.ExecuteReader();
byte[] bytes = null;
b=(byte[])dataRdr.GetValue(0);
//OR
b=(byte[])dataRdr[0];
string path = Server.MapPath("filename");
if (System.IO.File.Exists(path)
{
System.IO.StreamReader streamReader = new System.IO.StreamReader(path);
//System.IO.StreamReader streamReader = System.IO.File.OpenText(path);
//System.IO.FileInfo fi = new System.IO.FileInfo(path);
//System.IO.StreamReader streamReader = fi.OpenText();
}
// place string here
string html = streamReader.ReadToEnd();
// BinaryReader
// Determine buffer size
//System.IO.FileInfo fi = new System.IO.FileInfo(path);
//long bufLen = fi.Length
int chunkSize = 1024;
byte[] buffer = new byte[chunkSize];
//byte[] buffer = new byte[bufLen];
using (System.IO.BinaryReader binaryRdr = new System.IO.BinaryReader(streamReader.BaseStream))
{
buffer = binaryReader.ReadBytes(chunkSize);
while (buffer.Length > 0)
{
buffer = binaryReader.ReadBytes(chunkSize);
}
/* For undetermined sizes
using (var ms = new MemoryStream())
{
streamReader.BaseStream.CopyTo(ms);
buffer = ms.ToArray();
}
*/
}
// SQL
System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection(connectionString);
System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand("select columns from Table");
System.Data.SqlClient.SqlDataReader dataRdr;
con.Open();
dataRdr = cmd.ExecuteReader();
byte[] bytes = null;
b=(byte[])dataRdr.GetValue(0);
//OR
b=(byte[])dataRdr[0];
Labels:
c-sharp,
System.IO,
Transact-Sql
Sunday, September 15, 2013
Get Image (dah)
// IHttpHandler
using (SqlConnection myConnection = new SqlConnection("connection-string"))
{
SqlCommand cmd = new SqlCommand("usp_GetPersonImage", myConnection);
cmd.CommandType = CommandType.StoredProcedure;
myConnection.Open();
cmd.Parameters.Add("@Param1", SqlDbType.Int).Value = context.Request.QueryString["PID"];
cmd.Prepare();
try
{
SqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
byte[] bytes = null;
bytes = (byte[])reader[0];
context.Response.Clear();
context.Response.ClearHeaders();
context.Response.ContentType = "text/plain";
string base64String = Convert.ToBase64String(bytes,Base64FormattingOptions.None);
context.Response.Write(base64String);
}
}
catch (System.Data.SqlTypes.SqlNullValueException ex)
{
string s = ex.Message;
throw;
}
}
// Client
using (SqlConnection myConnection = new SqlConnection("connection-string"))
{
SqlCommand cmd = new SqlCommand("usp_GetPersonImage", myConnection);
cmd.CommandType = CommandType.StoredProcedure;
myConnection.Open();
cmd.Parameters.Add("@Param1", SqlDbType.Int).Value = context.Request.QueryString["PID"];
cmd.Prepare();
try
{
SqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
byte[] bytes = null;
bytes = (byte[])reader[0];
context.Response.Clear();
context.Response.ClearHeaders();
context.Response.ContentType = "text/plain";
string base64String = Convert.ToBase64String(bytes,Base64FormattingOptions.None);
context.Response.Write(base64String);
}
}
catch (System.Data.SqlTypes.SqlNullValueException ex)
{
string s = ex.Message;
throw;
}
}
// Client
var ddlID = '<%= DropDownList1.ClientID %>';
var lblID = '<%= label1.ClientID %>';
function getImage() {
$('#MainContent_label1').html("");
var ddl = document.getElementById(ddlID);
var selectedID = ddl.value;
var lbl = $(this).find(lblID);
$.get(
'GetImage.ashx?PID=' + selectedID,
null,
function (data) {
$('#MainContent_label1').html("data:image/jpg;base64," + data);
$('#imgDiv').html(
'');
}
);
};
Labels:
html,
image,
jQuery,
Transact-Sql
Thursday, July 25, 2013
Pad Right
@TableName + SPACE( 50 - LEN(@TableName))
replicate(@PadChar,@len-Len(@var))+@var
replicate(@PadChar,@len-Len(@var))+@var
Labels:
Transact-Sql
Monday, May 27, 2013
Add Drop DEFAULT Constraints
select
'ALTER TABLE '+ quotename(t.name) +' DROP CONSTRAINT ' + o.name
from sysobjects o
inner join syscolumns c on o.id = c.cdefault
inner join sysobjects t on c.id = t.id
where
o.xtype = 'D'
go
select
'ALTER TABLE '+ quotename(t.name) +' ADD CONSTRAINT '+ quotename(o.name) + ' DEFAULT (getdate()) FOR ' + quotename(c.name)
from sysobjects o
inner join syscolumns c on o.id = c.cdefault
inner join sysobjects t on c.id = t.id
where
o.xtype = 'D'
go
Labels:
Transact-Sql
Thursday, April 11, 2013
Last occurrence of char
select
reverse(substring(reverse(column),charindex(character,reverse(column)),len(column)))
from dbo.text
reverse(substring(reverse(column),charindex(character,reverse(column)),len(column)))
from dbo.text
Labels:
Transact-Sql
Friday, March 29, 2013
Split into table
FUNCTION [dbo].[udf_SplitRecordIDs]
(
@CsvList varchar(500)
)
RETURNS
@ParsedList table
(
ID int
)
AS
BEGIN
DECLARE @ID varchar(10), @Pos int
DECLARE @delimiter char = ','
SET @CsvList = LTRIM(RTRIM(@CsvList))+ @delimiter
SET @Pos = CHARINDEX(@delimiter, @CsvList, 1)
IF REPLACE(@CsvList, @delimiter, '') <> ''
BEGIN
WHILE @Pos > 0
BEGIN
SET @ID = LTRIM(RTRIM(LEFT(@CsvList, @Pos - 1)))
IF @ID <> ''
BEGIN
INSERT INTO @ParsedList (ID) VALUES (CAST(@ID AS int))
END
SET @CsvList = RIGHT(@CsvList, LEN(@CsvList) - @Pos)
SET @Pos = CHARINDEX(@delimiter, @CsvList, 1)
END
END
RETURN
END
Labels:
Transact-Sql
Tuesday, March 26, 2013
Grouping
select top(100) percent
ID
,AddressID
from
(
SELECT
ID
,rn = row_number() over (partition by ID order by ID, AddressID)
FROM [dbo].[Fac]
INNER JOIN [dbo].[FacAddress] ON Fac.ID = FacAddress.ID
) A
where (a.rn = 1)
order by FacilityID
ID
,AddressID
from
(
SELECT
ID
,rn = row_number() over (partition by ID order by ID, AddressID)
FROM [dbo].[Fac]
INNER JOIN [dbo].[FacAddress] ON Fac.ID = FacAddress.ID
) A
where (a.rn = 1)
order by FacilityID
Labels:
Transact-Sql
Wednesday, January 30, 2013
DB Object Count
SELECT [Count] = COUNT(*), [Type] = CASE type
WHEN 'AF' THEN 'AGGREGATE_FUNCTION'
WHEN 'C' THEN 'CHECK_CONSTRAINT'
WHEN 'D' THEN 'DEFAULT_CONSTRAINT'
WHEN 'F' THEN 'FOREIGN_KEY_CONSTRAINT'
WHEN 'FN' THEN 'SQL_SCALAR_FUNCTION'
WHEN 'FS' THEN 'CLR_SCALAR_FUNCTION'
WHEN 'FT' THEN 'CLR_TABLE_VALUED_FUNCTION'
WHEN 'IF' THEN 'SQL_TABLE_VALUED_FUNCTION'
WHEN 'IT' THEN 'INTERNAL_TABLE'
WHEN 'K' THEN 'PRIMARY_KEY'
WHEN 'P' THEN 'SQL_STORED_PROCEDURE'
WHEN 'PC' THEN 'CLR_STORED_PROCEDURE'
WHEN 'PG' THEN 'PLAN_GUIDE'
WHEN 'PK' THEN 'PRIMARY_KEY_CONSTRAINT'
WHEN 'R' THEN 'RULE'
WHEN 'RF' THEN 'REPLICATION_FILTER_PROCEDURE'
WHEN 'S' THEN 'SYSTEM_TABLE'
WHEN 'SN' THEN 'SYNONYM'
WHEN 'SO' THEN 'SEQUENCE_OBJECT'
WHEN 'SQ' THEN 'SERVICE_QUEUE'
WHEN 'TA' THEN 'CLR_TRIGGER'
WHEN 'TF' THEN 'SQL_INLINE_TABLE_VALUED_FUNCTION'
WHEN 'TR' THEN 'SQL_TRIGGER'
WHEN 'TT' THEN 'TABLE_TYPE'
WHEN 'U' THEN 'USER_TABLE'
WHEN 'UQ' THEN 'UNIQUE_CONSTRAINT'
WHEN 'V' THEN 'VIEW'
WHEN 'X' THEN 'EXTENDED_STORED_PROCEDURE'
ELSE sysobjects.type
END ,[Date]=CONVERT(nvarchar, GETDATE(), 101)
FROM sysobjects
GROUP BY sysobjects.type
HAVING sysobjects.type NOT IN ('S','IT','SQ')
ORDER BY [Type]
WHEN 'AF' THEN 'AGGREGATE_FUNCTION'
WHEN 'C' THEN 'CHECK_CONSTRAINT'
WHEN 'D' THEN 'DEFAULT_CONSTRAINT'
WHEN 'F' THEN 'FOREIGN_KEY_CONSTRAINT'
WHEN 'FN' THEN 'SQL_SCALAR_FUNCTION'
WHEN 'FS' THEN 'CLR_SCALAR_FUNCTION'
WHEN 'FT' THEN 'CLR_TABLE_VALUED_FUNCTION'
WHEN 'IF' THEN 'SQL_TABLE_VALUED_FUNCTION'
WHEN 'IT' THEN 'INTERNAL_TABLE'
WHEN 'K' THEN 'PRIMARY_KEY'
WHEN 'P' THEN 'SQL_STORED_PROCEDURE'
WHEN 'PC' THEN 'CLR_STORED_PROCEDURE'
WHEN 'PG' THEN 'PLAN_GUIDE'
WHEN 'PK' THEN 'PRIMARY_KEY_CONSTRAINT'
WHEN 'R' THEN 'RULE'
WHEN 'RF' THEN 'REPLICATION_FILTER_PROCEDURE'
WHEN 'S' THEN 'SYSTEM_TABLE'
WHEN 'SN' THEN 'SYNONYM'
WHEN 'SO' THEN 'SEQUENCE_OBJECT'
WHEN 'SQ' THEN 'SERVICE_QUEUE'
WHEN 'TA' THEN 'CLR_TRIGGER'
WHEN 'TF' THEN 'SQL_INLINE_TABLE_VALUED_FUNCTION'
WHEN 'TR' THEN 'SQL_TRIGGER'
WHEN 'TT' THEN 'TABLE_TYPE'
WHEN 'U' THEN 'USER_TABLE'
WHEN 'UQ' THEN 'UNIQUE_CONSTRAINT'
WHEN 'V' THEN 'VIEW'
WHEN 'X' THEN 'EXTENDED_STORED_PROCEDURE'
ELSE sysobjects.type
END ,[Date]=CONVERT(nvarchar, GETDATE(), 101)
FROM sysobjects
GROUP BY sysobjects.type
HAVING sysobjects.type NOT IN ('S','IT','SQ')
ORDER BY [Type]
Labels:
Transact-Sql
Saturday, January 26, 2013
Bravo to Beautiful Code (again)
The Exceptional Beauty of Doom 3’s Source Code by Shawn McGrath
(Doom3 Source Code Review)
sic
Code Complete: A Practical Handbook of Software Construction, Second Edition [Steve McConnell]
(McConnell published his first book, Code Complete, in 1993.)
sic
Code Complete: A Practical Handbook of Software Construction, Second Edition [Steve McConnell]
(McConnell published his first book, Code Complete, in 1993.)
Labels:
progamming
