Apr 14, 2011

Proxy Autoconfig , PAC

In Browser , setting as use PAC.
http://proxycfg/browser.pac


browser.pac content is as :

function FindProxyForURL(url, host)
{
if (isPlainHostName(host) ||
shExpMatch(url, "*.mycompany.*") ||
isInNet(host, "192.168.0.0", "255.255.0.0"))
return "DIRECT";
if (isInNet(myIpAddress(), "192.168.0.0", "255.255.240.0"))
return "PROXY proxy.mycompany.com:3128; DIRECT";
else
return "PROXY proxy.othersite.com:8080; DIRECT";
}



-- Description
isPlainHostName(host) -> check if local lan server
shExpMatch(url, "*.mycompany.*") -> check url use local web site server
isInNet(host, "192.168.0.0", "255.255.0.0")) -> check server IP if in LAN
isInNet(myIpAddress(), "192.168.0.0", "255.255.240.0") -> CHeck if My IP address is in local site subnet

Feb 22, 2011

SQL Server using decode / instr function

1. "charindex('Taiwan',description)" can be act as instr.
2. "case WHEN charindex('Taiwan',description) > 0 then 'Taiwan Local' else 'Other contury' end as location" can be act as decode.
3. full sql is like :
select mac,description,case WHEN charindex('Taiwan',description) > 0 then 'Taiwan Local' else 'Other contury' end as location from tmpdata

Jan 7, 2011

Sharepoint 2010 disable user "alert me"

There are two ways to disable "alert me"
1. Sharepoint administration -> application management -> Web Application -> Manage web application -> Application Ex. 80 , then "general Settings"
-> set "Alerts" option as "off"

2. Through permission level , remove "alert me".

Sharepoint 2010 master page layout , fix content display width .

1.
## Copy v4.master as custom.master , and set as default master page , and then under <head> , above </head> add following code -> style type="text/css" ...

<style type="text/css">
.s4-specialNavLinkList
{
display:none !important;
}
.ms-cui-ribbonTopBars > DIV {
MARGIN: 0px auto; WIDTH: 1000px; FLOAT: none
}
UL.ms-cui-tabBody {
MARGIN: 0px auto; WIDTH: 1000px; FLOAT: none
}
BODY #s4-titlerow > DIV {
MARGIN: 0px auto; WIDTH: 1000px; FLOAT: none
}
#s4-bodyContainer > DIV {
MARGIN: 0px auto; WIDTH: 1000px; FLOAT: none
}
.s4-help {
DISPLAY: none !important;
}
.s4-search {
DISPLAY: none !important;
}
.s4-titletext {
DISPLAY: none !important;
}
body #s4-leftpanel{font-size: 10pt !important; font-family: Verdana !important;}
</style>


2. Hide the left panel at all.
1. Site Actions > Edit Page >
2. # Insert > Web Part (or add a Web Part to a Web Part zone)
3. # Under Media and Content select Content Editor and click Add , then save
4. Enter the following HTML / CSS into content and click OK

<style type="text/css">
body #s4-leftpanel { display: none; }
.s4-ca { margin-left: 0px; }
</style>


## There is a good reference doc for sharepoint 2010 layout component at http://erikswenson.blogspot.com/2010/01/sharepoint-2010-base-css-classes.html

Nov 2, 2010

Sharepoint 2010 connect to sql server and oracle database

1. Menu add connection strings in c:\inetpub\wwwroot\wss\VirtualDirectories\\web.config
Ex.
/* for sql server and oracle*/
<connectionStrings>
<add name="AdventureWorksConnectionString" connectionString="Data Source=192.168.0.1;Initial Catalog=AdventureWorks;User Id=sa;Password=smpsqladm1" />
<add name="OracleConnectionString" connectionString="Data Source=Ora_TEST;User ID=system;Password=system_pwd" providerName="System.Data.OracleClient" />
</connectionStrings>

2. In Sharepoint virtual web part ascx file .

<asp:DetailsView ID="DetailsView1" runat="server" Height="50px" Width="125px"
DataSourceID="SqlDataSource1" EnableModelValidation="True">
</asp:DetailsView>

<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:AdventureWorksConnectionString%>"
SelectCommand="select count(*) as intUnRead from yourtable">
</asp:SqlDataSource>

<asp:DetailsView ID="DetailsView2" runat="server" Height="50px" Width="125px"
DataSourceID="SqlDataSource2" EnableModelValidation="True">
</asp:DetailsView>

<asp:SqlDataSource ID="SqlDataSource2" runat="server"
ConnectionString="<%$ ConnectionStrings:OracleConnectionString %>"
ProviderName="System.Data.OracleClient"
SelectCommand="select count(*) as UnRead from testtable">
</asp:SqlDataSource>

Nov 1, 2010

Using Visual Studio 2010 add connect string to Sharepoint 2010 to query database data

1. From VS2010 , add new sharepoint 2010 empty project as , and then add one new item "Virtual Web Part" name as "SQLWebPartTest"
2. In "SQLWebPartTest" ascx file , manual add codes for DetailsView and SqlDataSource .
-----------
<asp:DetailsView ID="DetailsView1" runat="server"
DataSourceID="SqlDataSource1" EnableModelValidation="True">
</asp:DetailsView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:ChangebyYourConnectionString %>"
SelectCommand="select * from ChangebyYourTable">
</asp:SqlDataSource>

<asp:DetailsView ID="DetailsView2" runat="server"
DataSourceID="SqlDataSource2" EnableModelValidation="True">
</asp:DetailsView>
<asp:SqlDataSource ID="SqlDataSource2" runat="server"
ConnectionString="<%$ ConnectionStrings:ChangebyYourConnectionString2 %>"
SelectCommand="select * from ChangebyYourTable">
</asp:SqlDataSource>
--------------
3. In the project "Solution Explorer" , right click in "Feature1" to add one "Event Receiver" and name it as "Feature1.EventReceiver.cs"
--- In "Feature1.EventReceiver.cs"
#1 Add using
using System.Reflection;
using Microsoft.SharePoint.Administration;

#2 Add following code in "public class Feature1EventReceiver : SPFeatureReceiver"
private ModificationEntry[] entries =

//Ensure there's a connectionStrings section.
new ModificationEntry(
"connectionStrings"
,"configuration"
,"<connectionStrings/>"
,SPWebConfigModification.SPWebConfigModificationType.EnsureChildNode
,true)
//Create the connectionstring.
,new ModificationEntry(
"add[@name='ChangebyYourConnectionString'][@connectionString='Data Source=192.168.0.1;Initial Catalog=ChangebyYourDB;User Id=ChangebyYourID;Password=ChangebyYourPWD']"
,"configuration/connectionStrings"
,"<add name='ChangebyYourConnectionString' connectionString='Data Source=192.168.0.1;Initial Catalog=ChangebyYourDB;User Id=ChangebyYourID;Password=ChangebyYourPWD'/>"
,SPWebConfigModification.SPWebConfigModificationType.EnsureChildNode
,false)
,new ModificationEntry(
"add[@name='ChangebyYourConnectionString2'][@connectionString='Data Source=192.168.0.100;Initial Catalog=AdventureWorks;User Id=ChangebyYourID;Password=ChangebyYourPWD']"
,"configuration/connectionStrings"
,"<add name='ChangebyYourConnectionString2' connectionString='Data Source=192.168.2.100;Initial Catalog=AdventureWorks;User Id=ChangebyYourID;Password=ChangebyYourPWD'/>"
,SPWebConfigModification.SPWebConfigModificationType.EnsureChildNode
,false)
};

public override void FeatureActivated(SPFeatureReceiverProperties properties)

//Get a reference to the web application and then remove entries for the blorum.
SPSite site = properties.Feature.Parent as SPSite;
SPWebApplication webApplication = site.WebApplication;

site.RootWeb.Title = "Set from activating code at " + DateTime.Now.ToString();
site.RootWeb.Update();

foreach (ModificationEntry entry in entries)

webApplication.WebConfigModifications.Add(CreateModification(entry));


webApplication.WebService.WebConfigModifications.Clear();
webApplication.WebService.ApplyWebConfigModifications();




public override void FeatureDeactivating(SPFeatureReceiverProperties properties)

SPSite site = properties.Feature.Parent as SPSite;
SPWebApplication webApplication = site.WebApplication;

site.RootWeb.Title = "Set from deactivating code at " + DateTime.Now.ToString();
site.RootWeb.Update();

foreach (ModificationEntry entry in entries)

if (!entry.CreateOnly)
webApplication.WebConfigModifications.Remove(CreateModification(entry));


webApplication.WebService.ApplyWebConfigModifications();



private SPWebConfigModification CreateModification(ModificationEntry entry)

SPWebConfigModification modification = new SPWebConfigModification(entry.Name, entry.XPath);
modification.Owner = Assembly.GetExecutingAssembly().FullName;
modification.Sequence = 0;
modification.Type = entry.ModificationType;
modification.Value = entry.Value;

return modification;


private struct ModificationEntry

public string Name;
public string XPath;
public string Value;
public SPWebConfigModification.SPWebConfigModificationType ModificationType;
public bool CreateOnly;

public ModificationEntry(string name, string xPath, string value,
SPWebConfigModification.SPWebConfigModificationType modificationType, bool createOnly)

Name = name;
XPath = xPath;
Value = value;
ModificationType = modificationType;
CreateOnly = createOnly;


4. Press F5 in VS2010 to open Sharepoint site , and insert add webpart from "custom" location.