lunedì 9 luglio 2012
Lista terremoti recenti
Etichette:
earthquakes,
terremoti,
windows phone 7
martedì 7 febbraio 2012
Ignore inline DTD in XML file with LINQ to XML
If we want to read an XML file with LINQ to XML that have DTD inline instructions, normally we use this statement
XDocument doc = XDocument.Load("myXmlFile.xml");
but... we'll receive an exception.
The Load method of the XDocument has several overloads, including one in particular that takes as a parameter an XmlReader object.
Let's see how to use it:
XDocument doc = XDocument.Load("myXmlFile.xml");
but... we'll receive an exception.
The Load method of the XDocument has several overloads, including one in particular that takes as a parameter an XmlReader object.
Let's see how to use it:
XmlReaderSettings settings = new XmlReaderSettings();
settings.DtdProcessing = DtdProcessing.Ignore;
XmlReader reader = XmlReader.Create("myFile.xml", settings);
XDocument doc = XDocument.Load(reader, LoadOptions.PreserveWhitespace);
settings.DtdProcessing = DtdProcessing.Ignore;
XmlReader reader = XmlReader.Create("myFile.xml", settings);
XDocument doc = XDocument.Load(reader, LoadOptions.PreserveWhitespace);
First, create a XmlReaderSettings object and set its DtdProcessing property to "Ignore". It causes the DOCTYPE element to be ignored.
Then, create a new XmlReader object using the file path name and XmlReader previously created settings.
Now we can open without previous exception out xml file, passing XmlReader object as argument of XDocument Load method.
Etichette:
.NET,
c#,
DTD,
Linq to XML,
xml
lunedì 16 gennaio 2012
EntityDataSource and isolation level.
Suppose we have a asp.net page and display some data from a database table in a GridView. The latter is connected to EntityDataSource.
If we are running a long elaboration on that table (as an update or other processing), the page containing the data to show cannot hang and display our data until processing is finished.
If we are running a long elaboration on that table (as an update or other processing), the page containing the data to show cannot hang and display our data until processing is finished.
That's not ever that we want....
Probably this behavior is not what we want. How can we solve it?
Using EntityDataSource ContextCreated event we can "attach" a transaction to the ObjectContext used by datasource.
protected void MyEntityDataSource_ContextCreated(object sender, EntityDataSourceContextCreatedEventArgs e) {
e.Context.Connection.Open();
e.Context.Connection.BeginTransaction(IsolationLevel.ReadUncommitted);
}
e.Context.Connection.Open();
e.Context.Connection.BeginTransaction(IsolationLevel.ReadUncommitted);
}
First we have to manually open the database connection. Then, start a database transaction specifying the isolation level we want to use. In this case, we need "ReadUncommitted" so we can read all data from database, including those not yet committed (dirty).
Etichette:
entity framework,
entitydatasource,
isolation level,
transactions
mercoledì 30 novembre 2011
Web data storage API HTML5
Look this tip (italian language only):
Web data storage API HTML5 Look
Web data storage API HTML5 Look
Etichette:
html5,
JavaScript
mercoledì 23 novembre 2011
Reportistica in ASP.NET con la libreria Spire.DataExport
Etichette:
ajax,
asp.net,
c#,
report,
spire data export
giovedì 17 novembre 2011
Trace T-SQL statements generated by Entity Framework
If we want to keep track of a query with Entity Framework without use a profiler, we can use the method ToTraceString which is part of the ObjectQuery object. In practice, this method displays the commands sent from our T-SQL query to the database.
First, when using the ToTraceString method we need an open connection to the database, otherwise we will raise an exception.
Its use is very simple. Here an example:
The output will be something like:
One important thing about ToTraceString method is that it doesn’t execute the query but it's only output the statement to be executed.
First, when using the ToTraceString method we need an open connection to the database, otherwise we will raise an exception.
Its use is very simple. Here an example:
using (MyEntities ctx= new MyEntities()) {
var strSql = "SELECT VALUE t FROM MyEntities.Employees AS t";
var myQuery = ctx.CreateQuery(strSql); ctx.Connection.Open(); Console.WriteLine(myQuery.ToTraceString()); Console.ReadLine();}The output will be something like:
SELECT
[it].[FirstName] AS [FirstName],
[it].[LastName] AS [LastName],
[it].[Age] AS [Age]
FROM [dbo].[Employees] AS [it]
One important thing about ToTraceString method is that it doesn’t execute the query but it's only output the statement to be executed.
Etichette:
c#,
entity framework,
objectquery
domenica 24 luglio 2011
Layout for multiple file upload with jQuery
Within forms, many times we need to empower users to enter one or more files. In some cases you may need to perform the upload of multiple files, without knowing in advance how they might be.
Limit the number of inputs for uploading files is sometimes not the best choice, so we could give the user a chance to put other files in his complete autonomy.
This post explains how to use jQuery without any plugins for creating html for inserting multiple fileupload.
We start from a simple html page that contains only those elements essential for this application:
<!DOCTYPE html>
<html>
<head>
<title>Multiupload file</title>
<script type="text/javascript" src="Scripts/jquery-1.6.2.min.js"></script>
<script type="text/javascript" src="Scripts/JScript.js"></script>
</head>
<body>
<div class="container">
<button id="btAddFileUpload" type="button">Add file</button>
<div id="fileUp1">
<input id="File1" type="file" />
<button id="btDelete1" type="button" value="1" onclick="javascript:deleteUpload(value)">Delete</button>
</div>
<input id="Submit1" type="submit" value="Submit" />
</div>
</body>
</html>
I copied into my "Scripts" directory latest jQuery library version, but you can refer it in the classic mode by Google:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
I wrote my JavaScript code in an external file called "JScript.js" and referenced in html script tag. This is the code:
$(document).ready(function () {
$('#btAddFileUpload').click(add);
});
//upload file tags counter
var count = 1;
//add fileupload method
function add() {
//upload file tags increase
count++;
//clone div tag with all children elements
var copied = $('#fileUp1').clone(true);
//increase all children tags ids
$('input:file', copied).attr('id', 'File' + count);
$('button', copied).attr(
{ id: 'btDelete' + count,
value: count
}
);
//increase div tag id
$(copied).attr('id', 'fileUp' + count);
/* another mode to change attribute names
copied.children('input').attr('id', 'File' + count);
copied.children('button').attr('id', 'btDelete' + count);
*/
//append copied div and relative children tags in container div, but before submit button
$(copied).appendTo('.container').insertBefore('#Submit1');
}
//delete method fileupload method
function deleteUpload(id) {
//remove file upload (parent div and childrens)
if (count > 1) {
//decrease total amount of uploadfile tags
count--;
var nameElemToDelete = '#fileUp' + id;
$(nameElemToDelete).remove();
}
//to avoid holes, recalculating all the ids after the removed one
for (indx = id; indx <= count; indx++) {
var inputDiv = $('#fileUp' + (parseInt(indx) + 1));
$(inputDiv).attr('id', 'fileUp' + indx);
$('input:file', inputDiv).attr('id', 'File' + indx);
$('button', inputDiv).attr(
{ id: 'btDelete' + indx,
value: indx
}
);
}
}
At the begin, I call the $(document).ready jQuery statement to join the add function to add button at the startup (page entirely loaded).
Each time you click on the button "btAddFileUpload", all you clone the "
Limit the number of inputs for uploading files is sometimes not the best choice, so we could give the user a chance to put other files in his complete autonomy.
This post explains how to use jQuery without any plugins for creating html for inserting multiple fileupload.
We start from a simple html page that contains only those elements essential for this application:
<!DOCTYPE html>
<html>
<head>
<title>Multiupload file</title>
<script type="text/javascript" src="Scripts/jquery-1.6.2.min.js"></script>
<script type="text/javascript" src="Scripts/JScript.js"></script>
</head>
<body>
<div class="container">
<button id="btAddFileUpload" type="button">Add file</button>
<div id="fileUp1">
<input id="File1" type="file" />
<button id="btDelete1" type="button" value="1" onclick="javascript:deleteUpload(value)">Delete</button>
</div>
<input id="Submit1" type="submit" value="Submit" />
</div>
</body>
</html>
I copied into my "Scripts" directory latest jQuery library version, but you can refer it in the classic mode by Google:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
I wrote my JavaScript code in an external file called "JScript.js" and referenced in html script tag. This is the code:
$('#btAddFileUpload').click(add);
});
//upload file tags counter
var count = 1;
//add fileupload method
function add() {
//upload file tags increase
count++;
//clone div tag with all children elements
var copied = $('#fileUp1').clone(true);
//increase all children tags ids
$('input:file', copied).attr('id', 'File' + count);
$('button', copied).attr(
{ id: 'btDelete' + count,
value: count
}
);
//increase div tag id
$(copied).attr('id', 'fileUp' + count);
/* another mode to change attribute names
copied.children('input').attr('id', 'File' + count);
copied.children('button').attr('id', 'btDelete' + count);
*/
//append copied div and relative children tags in container div, but before submit button
$(copied).appendTo('.container').insertBefore('#Submit1');
}
//delete method fileupload method
function deleteUpload(id) {
//remove file upload (parent div and childrens)
if (count > 1) {
//decrease total amount of uploadfile tags
count--;
var nameElemToDelete = '#fileUp' + id;
$(nameElemToDelete).remove();
}
//to avoid holes, recalculating all the ids after the removed one
for (indx = id; indx <= count; indx++) {
var inputDiv = $('#fileUp' + (parseInt(indx) + 1));
$(inputDiv).attr('id', 'fileUp' + indx);
$('input:file', inputDiv).attr('id', 'File' + indx);
$('button', inputDiv).attr(
{ id: 'btDelete' + indx,
value: indx
}
);
}
}
At the begin, I call the $(document).ready jQuery statement to join the add function to add button at the startup (page entirely loaded).
Each time you click on the button "btAddFileUpload", all you clone the "
" tag including its children, renaming the id attributes with a new name including the number increases by one.
All this is done using the jQuery methos "clone" on an object (tag) that you want to replicate.
With "deleteUpload" function you can delete the same tag (and all its childrens) and recalculate all ids to avoid holes. This was done to iterate over all the inputs file without any problems.
All this is done using the jQuery methos "clone" on an object (tag) that you want to replicate.
With "deleteUpload" function you can delete the same tag (and all its childrens) and recalculate all ids to avoid holes. This was done to iterate over all the inputs file without any problems.
Etichette:
JavaScript,
jQuery,
multiple file upload
Iscriviti a:
Post (Atom)