Include the client JavaScript & CSS libraries
<link rel="stylesheet" type="text/css" href="dbnetsuite.css.ashx" />
<script language="JavaScript" src="dbnetsuite.js.ashx"></script>
Client-side configuration script
<script type="text/javascript">
jQuery(document).ready( init )
//////////////////////////////////////////////////////////////////////////////
function init()
//////////////////////////////////////////////////////////////////////////////
{
jQuery("#movieDialog").dialog({ autoOpen: false, width: 640, close: function(event, ui) { jQuery("#videoFrame").attr("src", "about:blank") } });
var dbnetgrid1 = new DbNetGrid("dbnetgrid1");
with (dbnetgrid1)
{
connectionString = "SamplesDatabase"
fromPart = "movie"
setColumnExpressions("title","video_id","'' as thumb1","'' as thumb2","'' as thumb3");
setColumnLabels("Title","Video ID"," "," "," ");
bind("onCellTransform", makeHyperlink)
setColumnProperty(["thumb1","thumb2","thumb3"],"edit", false)
setColumnProperty("video_id","display", false)
setColumnProperty("video_id","edit", true)
initialize()
}
}
//////////////////////////////////////////////////////////////////////////////
function makeHyperlink(sender, args)
//////////////////////////////////////////////////////////////////////////////
{
switch (args.columnName) {
case "title":
var row = args.cell.parentNode;
var videoId = sender.columnValue("video_id", row);
var cell = jQuery(args.cell);
var a = jQuery("<a/>").attr("href", "javascript:void(0)").attr("url", "http://www.youtube.com/embed/" + videoId).text(cell.text()).click(showVideo)
cell.empty().append(a)
break;
case "thumb1":
case "thumb2":
case "thumb3":
var row = args.cell.parentNode;
var videoId = sender.columnValue("video_id", row);
var cell = jQuery(args.cell);
url = "http://img.youtube.com/vi/" + videoId + "/" + args.columnName.replace("thumb", "") + ".jpg"
var a = jQuery("<img/>").attr("src", url);
cell.empty().append(a)
break;
}
}
//////////////////////////////////////////////////////////////////////////////
function showVideo(event) {
//////////////////////////////////////////////////////////////////////////////
jQuery("#videoFrame").attr("src", jQuery(event.target).attr("url"));
jQuery("#movieDialog").dialog("open");
jQuery("#movieDialog").dialog("option", "title", jQuery(event.target).text());
}
</script>
HTML markup
<div id="dbnetgrid1"></div>
<div id="movieDialog" style="display:none">
<iframe id="videoFrame" width="640" height="480" src="" frameborder="0" allowfullscreen></iframe>
</div>
Server-side code behind
///////////////////////////////////////////////////////////////
private void AddMovieTable()
///////////////////////////////////////////////////////////////
{
using (DbNetData Db = new DbNetData("SamplesDatabase"))
{
Db.Open();
Db.AddTable("movie");
Db.AddColumn("movie", "title", typeof(string), 50);
Db.AddColumn("movie", "description", typeof(string), 100);
Db.AddColumn("movie", "video_id", typeof(string), 100);
string[,] Movies = new string[,] {
{"Getting Started","mXzehuHnB5k"},
{"Morph - Blancmange","0Der9xbuVJs"},
{"The Cat Came Back","gtI1pWkHto0"}
};
CommandConfig Insert = new CommandConfig("movie");
QueryCommandConfig Query = new QueryCommandConfig("select id from movie where video_id = @video_id");
for (int I = 0; I < Movies.GetLength(0); I++)
{
Query.Params["video_id"] = Movies[I, 1];
if (!Db.ExecuteSingletonQuery(Query))
{
Insert.Params["title"] = Movies[I, 0];
Insert.Params["video_id"] = Movies[I, 1];
Db.ExecuteInsert(Insert);
}
}
}
}