neljapäev, 30. oktoober 2008

SqlDataSource DateTime parameetri lisamine ja eemaldamine

Lisamine käib nii:

this.SqlDataSourceTenants.SelectParameters.Add("submission_date", System.TypeCode.DateTime, this.tbSubmissionDate.Text.Trim());

ja eemaldamine nii:

this.SqlDataSourceReport.SelectParameters.Remove(SqlDataSourceReport.SelectParameters["start_date"]);

Lahendab ära need juhtumid, kus mõnikord võib 17.06.2008 puhul päev ja kuu vahetusse minna ja viga pilduma hakata

Blogged with the Flock Browser

teisipäev, 14. oktoober 2008

.NET ASSEMBLY eemaldamine Global Assembly Cache -st

Kui .NET2 Framefork Configuration-iga kuidagi maha ei saa tuleb käsitsi GACUTIL-iga teha

gacutil /uf "ReportFunctions"

ja kui see ka ei aita siis käsitsi GAC kataloogi kallale
ehk Command Prompt käima

ja sealt läheme GAC kataloogi

cd c:\windows\assembly

VisualStudio2008 asjad on GAC_MSIL alamkataloogis
cd gac_msil

ja sealt võtame vastava alamkataloogi maha, kui Assembly nimi on ReportFunctions siis

rmdir ReportFunctions /s/q

Seda käsitsi eemaldamist ei soovitata aga kui pole midagi muud teha, siis võib seda proovida

Blogged with the Flock Browser

reede, 10. oktoober 2008

SQL SERVER 2005 XML andmevälja näitamine GridView-ga

Et on siis SQL SERVER 2005 tabel ja seal sees on mõni tulp XML tüüpi

CREATE TABLE [dbo].[APPLICATION_CONTRACTS](
[APPLICATIONS_ID] [int] NOT NULL,
[CONTRACTS_ID] [int] NOT NULL,
[APPLICATION_OPTIONS] [xml] NULL)

ja müüd sinna APPLICATION_OPTIONS kirjutame XML andmetüübi sisse

...
DECLARE @aop XML
DECLARE @temp TABLE (jrk INT PRIMARY KEY)
INSERT INTO @temp ([jrk]) VALUES ( 1)
SET @jrk=( SELECT TOP 1 jrk FROM [dbo].[APPLICATIONS_S](DEFAULT) WHERE application_id = @application_id)
SET @aop = (SELECT TOP 1 ISNULL(@jrk,0) AS ApplicationPlaceInOrder FROM @temp FOR XML PATH('APPLICATION_OPTIONS'), TYPE)

INSERT INTO [dbo].[APPLICATION_CONTRACTS] (APPLICATIONS_ID, CONTRACTS_ID, APPLICATION_OPTIONS])
VALUES (@application_id, @contract_id,@aop)

tulemuseks on APPLICATION_OPTIONS välja sisu järgmine

<APPLICATION_OPTIONS>
<ApplicationPlaceInOrder>8</ApplicationPlaceInOrder>
</APPLICATION_OPTIONS>

siin <application_options> on XML juurelemendi nimi (langeb kogemata kokku ka andmevälja enda nimega

Ja nüüd tahame seda asja näidata ASP:Gridview

Loeme andmet baelist, APPLICATION_OPTIONS on ainult XML tüüpi
SELECT [APPLICATIONS_ID], [CONTRACTS_ID], [APPLICATION_OPTIONS]
FROM [dbo].[APPLICATION_CONTRACTS] WHERE [APPLICATIONS_ID]=4752

Iseenesest töötab ka kui lihtsalt see APPLICATION_OPTIONS sättida Gridview DataBound väljaks (sel juhul näidatakse ainult elementide sisu, kui tahetakse nii elementide nimetust ja sisu näidata siis siin üks näide:



Teeme GridView-sse ühe TemplateField ,kus on PlaceHolder kuhu bindime XML sisu

<asp:TemplateField headertext="<%$ Resources:resource, Notes %>">
<ItemTemplate>
<asp:PlaceHolder runat="server" id="AppOption">
</asp:PlaceHolder>
</ItemTemplate>
</asp:TemplateField>


GridView DataBound eventis paneme XML sisu PlaceHolderi sisse tabeli kujul, ehk loeme XML välja kui stringi ja selle stringist loome XmlDocument ja siiis käime mööda seda XML dokumenti pidi allapoole ja teeme samal ajal ka tabelit

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.DataItem != null)
{

PlaceHolder xl = (PlaceHolder)e.Row.FindControl("AppOption");
if (!((System.Data.Common.DbDataRecord)e.Row.DataItem)["APPLICATION_OPTIONS"].Equals(DBNull.Value))
{
string he = ((System.Data.Common.DbDataRecord)e.Row.DataItem)["APPLICATION_OPTIONS"].ToString();
XmlDocument doc = new XmlDocument();
doc.LoadXml(he);
System.Web.UI.WebControls.Table te = CWTurukampusHelperUtils.xmlMarked(doc);
xl.Controls.Add(te);
}
}

tükk mis nüüd sellest XmlDocument-ist teeb asp:Table valmis

public static System.Web.UI.WebControls.Table xmlMarked(XmlDocument doc)
{
System.Web.UI.WebControls.Table tabel = new Table();
XmlElement root = doc.DocumentElement;
XmlNodeList nodes = root.ChildNodes;
TableRow rida;
TableCell va;
Literal vas;
foreach (XmlNode nod in nodes)
{
rida = new TableRow();
va = new TableCell();
vas = new Literal();
try //kui ta sellist node nimetust ei leia ressursi tekstidest, võtame NODE enda nime
{

vas.Text = HttpContext.GetGlobalResourceObject("Resource", nod.Name).ToString();
}
catch (SystemException ex)
{
vas.Text = nod.Name;
}
va.Controls.Add(vas);
rida.Cells.Add(va);
va = new TableCell();
vas = new Literal();
vas.Text = nod.InnerText;
va.Controls.Add(vas);
rida.Cells.Add(va);
tabel.Rows.Add(rida);
}

return tabel;
}

Blogged with the Flock Browser