XMLDataViewer

分享于 

4分钟阅读

Web开发

  繁體

介绍

这是我的第一个CodeProject文章。 所有评论都将被非常感谢。

在我必须把图像放到 DataSet 控件或者任何其他控件中的情况下,我想到了开发这个控件的想法,我必须完成所有工作。 这里控件使用起来非常简单。 你将要显示的XML文件的物理路径或者URL放置,以及要使用的表格。

它实际上使用 DataSet 对象加载数据,因这里必须指定要使用的DataSet 中的表。 运行时,你可以将XML文件的URL或者物理地址更改为表的名称。 控件设置所有的HTTP和FTP地址到它们的链接,将图像文件的所有标签放在 JPG。GIF。BMP。PNG。等等 格式的。 它还显示视频文件的Windows 媒体播放器。

例如如果URL的或者其他文件夹中有一些XML文件,那么它将显示文件链接的所有数据。图像和视频文件,即使图像和视频包含在该URL中。 如果XML文件包含在web应用程序的root 或者任何文件夹中,则使用物理地址来考虑这些图像和/或者视频。

下面是控件的Render 方法的一些 Fragment。

这里,我们开始加载 DataSet 中的XML并开始绘制控件。

protectedoverridevoid Render(HtmlTextWriter output)
{
 EnsureChildControls();
 control_Width = this.Width;
 if (_datasource!= null)
 {
 ds = new DataSet();
 ds.ReadXml(_datasource);
 if (ds.Tables[TableName].Rows.Count >0)
 {
 /*If the ShowTableHeader is true we draw a div control.
 *theres a slight bug in the width of the div, so if you
 * fix it send it back pls.
 */if (ShowTableHeader)
 {
 output.AddStyleAttribute("BACKGROUND-COLOR", HeaderBackColor.Name);
 output.AddStyleAttribute("BORDER-RIGHT", BorderColor.Name + "" + 
 BorderWidth.Value.ToString()+"px"+BorderStyle);
 output.AddStyleAttribute("BORDER-TOP", BorderColor.Name + "" + 
 BorderWidth.Value.ToString()+"px"+BorderStyle);
 output.AddStyleAttribute("BORDER-LEFT", BorderColor.Name + "" + 
 BorderWidth.Value.ToString()+"px"+BorderStyle);
 output.AddStyleAttribute("BORDER-BOTTOM", BorderColor.Name + "" + 
 BorderWidth.Value.ToString()+"px"+BorderStyle);
 output.RenderBeginTag("div");
 output.Write(this.title);
 output.RenderEndTag();
 }

以下是设计时控件的某些图像:

这是另一个代码片段,显示了如何设置 url。电子邮件地址。视频和图像的处理。

foreach(DataRow myRow in ds.Tables[TableName].Rows)
{
 output.Indent = 2;
 output.WriteBeginTag("tr");
 output.WriteAttribute("bordercolor", this.InnerBorderColor.Name);
 output.Write(">");
 foreach(DataColumn myColumn in ds.Tables[TableName].Columns)
 {
 string cellValue = myRow[myColumn].ToString();
 /*Here we put the www, ftp and email addresses
 *their respective links.
 */if (cellValue.ToLower().StartsWith("http:")||
 cellValue.ToLower().StartsWith("ftp:"))
 {
 cellValue = "<a target='_blank' href='"+cellValue+"'>"+cellValue+"</a>";
 }
 foreach(char str in cellValue)
 {
 if (str == '@')
 cellValue = "<a href='mailto:"+cellValue+"'>"+cellValue+"</a>";
 }
 output.Indent = 4;
 output.WriteBeginTag("td");

如果使用的XML文件在本地磁盘中,它将自动显示所有的图像。

这是运行时控件的某些映像:

备注

在这个控件中仍然有许多东西,比如使用缩略图而不是显示的图像。 这是我的第一篇文章,所以我希望不会让你们失望。

下次我想把我的知识提升一点。 感谢你的帮助,欢迎所有评论。


相关文章