Friday, May 30, 2008

External Tables - Oracle 10.2E

Note: We have to create PRODUCTS directory and data.csv file should be avaible in the PRODUCTS directory
CREATE TABLE "PRODUCTDATA"."PRODUCTS"
(
"COL1" NUMBER(19,0),
"COL2" CLOB,
"COL3" VARCHAR2(25 BYTE),
"COL4" VARCHAR2(10 BYTE),

)
ORGANIZATION EXTERNAL
(

TYPE ORACLE_LOADER
DEFAULT DIRECTORY "PRODUCT"
ACCESS PARAMETERS
(

records delimited by newline
fields terminated by ','
missing field values are null

)
LOCATION
(

'data.csv'

)

);

Wednesday, May 28, 2008

Search Engine Optimization(SEO) and URL Rewriting using HTTPModules - Microsoft ASP.NET

Implement IHttpModule interface, which has Initialization(public void Init(HttpApplication context)) methods. In there we attach URL Rewrite method to AuthorizeRequest (for windows authorization)
Note:This is a simplified version. For more information please see references at the end of this post.

namespace Root.Client.SEOHandler
{

public class SEOModule : IHttpModule
{

public void Init(HttpApplication context)
{

context.AuthorizeRequest += new EventHandler(SEOModuleAuthorizeRequest);

}

void SEOModuleAuthorizeRequest(object sender, EventArgs e)
{

HttpApplication app = (HttpApplication)sender;
/* note:
we must implement switches collection in CustomConfiguration as a property. See complete description of how to implement a custom configuration section in web.config please see Adding new section to web.config - Microsoft ASP.NET
*/
List switches =((CustomConfiguration) HttpContext.Current.Cache [“customConfiguration”]).Switches;
for (int i = 0; i < switches.Count; i++)
{

string lookFor = string.Format("{0}/{1}",app.Context.Request.ApplicationPath,switches[i]);
if(string.Compare(lookFor,app.Request.Path)==0)
app.Context.RewritePath(
string.Format(“{0}/{1}”,"required_page.aspx", app.Context.Request.ApplicationPath);

}

}

}

}


Register assembly in web.config
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
...

<system.web>
...

<httpModules>

<add name="SEOModule" type="Root.Client.SEOHandler.SEOModule" />
...

</httpModules>
...

</system.web>
...

</configuration>


Reference: URL Rewriting in ASP.NET

Tuesday, May 27, 2008

Adding new section to web.config - Microsoft ASP.NET

Create new section handeler for your new config section (implement IConfigurationSectionHandler interface)
public class CustomConfiguration : IConfigurationSectionHandler
{
public object Create(object parent, object input, XmlNode node)
{

/// add your logic here ...
return new object();

}

}


Add a reference to your new config section and register it with the assembly
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">

<configSections>

<section name="customConfiguration" type="Root.Client.Configuration.CustomConfiguration, Root.Client.Configuration" />
....

</configSections>

<customConfiguration>
.....
// your custom configuration
.....

<customConfiguration>

</configuration>


Set custom configuration section in application start event(global.ascx) and add it to the cache
public override void Application_Start(object sender, EventArgs e)
{

HttpContext.Current.Cache.Insert("CustomConfiguration", System.Configuration.ConfigurationSettings.GetConfig("customConfiguration") as CustomConfiguration);

}

Friday, May 23, 2008

Render time hacks - Page.Render(HtmlTextWriter writer)

public override void Render(System.Web.UI.HtmlTextWriter writer)
{

StringBuilder sb = new StringBuilder();
HtmlTextWriter htw = new HtmlTextWriter(new StringWriter(sb));
base.Render(htw);
string html = sb.ToString();

//Example
html.Replace("<b>","<strong>");
html.Replace("</b>","</strong>");

// Insert the meta tags

// Insert webtrends meta tags

// Move hidden system inserted fields

// Move viewstate

// Perform SEO checks

// And finally, write the HTML to original writer
writer.Write(html);

}

Thursday, May 22, 2008

ASP.NET Master Pages and overriding attributes of Body tag

Default.Master page

<body id="MasterPageBody" runat="server" >
</body >

Code behind

Public HtmlGenericControl Body
{


Get{ return this.MasterPageBody}
Set{ this.MasterPageBody = value;}

}

Content page


Register

<%@ MasterPage VirtualPath="~/virtual/path/to/your/master/page" %>

Code Behind

Public void Page_Load(EventArgs e, Sender o)
{
This.MasterPageBody.Attributes.Add(“onload","javascript:alert(’I am here’)");
}

Tuesday, May 13, 2008

Using JQuery with Microsoft AJAX.NET

Symptom:

$(document).ready(
function()
{
///
///execute only when a full page refresh.
///

});


ready() function executes only when a page does a full page refresh not when it does a partial page refresh inside a update panel

Solution:


<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>

<div class="rounded">
Welcome to Microsoft AJAX.Net
<asp:Button ID="Button1" runat="server" Text="Button" CssClass="button" />
</div>
<script type="text/javascript" language="javascript">
Sys.Application.add_load(functionNeedToBeExecuted);
function functionNeedToBeExecuted ()
{
// code need to be executed ....
}
</script>

</ContentTemplate>
</asp:UpdatePanel>