2011-02-11 124 views
0

我有自定义列表中有图像字段。我必须通过对象建模代码来显示图像。图像自定义网页

哪个控件我需要用来在webpart中显示图像以及我需要为其指定哪个属性。

[Guid("207cea76-b1ee-4b86-9638-00c22d3d9398")] 
public class News : System.Web.UI.WebControls.WebParts.WebPart 
{ 
    Label lblTitle; 
    ImageField imgNews; 
    Label lblDescription; 
    public News() 
    { 
    } 

    protected override void CreateChildControls() 
    { 
     base.CreateChildControls(); 
     lblTitle = new Label(); 
     imgNews = new ImageField(); 
     lblDescription = new Label(); 

     string siteURL = "http://my-dev-box-har"; 
     using (SPSite site = new SPSite(siteURL)) 
     { 
      using (SPWeb web = site.OpenWeb()) 
      { 
       SPListItemCollection list = web.Lists["News"].Items ; 
       foreach (SPListItem item in list) 
       { 
        lblTitle.Text = item["Title"].ToString(); 
        lblDescription.Text = item["Description"].ToString(); 
        imgNews. = item[""].ToString(); 
        Controls.Add(lblTitle); 
        Controls.Add(lblDescription); 
        } 




      } 
     } 

    } 
} 

}

我不知道wheather使用图像或ImageField的控件来显示我的形象形成的SharePoint自定义列表。

有人可以指点我正确的方向请。

谢谢 哈日

回答

1

这是最简单的例子我能想出:

using System.ComponentModel; 
using System.Web.UI.WebControls; 
using System.Web.UI.WebControls.WebParts; 
using Microsoft.SharePoint; 

namespace TestPictureWebPart.PicWebPart 
{ 
    [ToolboxItemAttribute(false)] 
    public class PicWebPart : WebPart 
    { 
     protected override void CreateChildControls() 
     { 
      SPList list = SPContext.Current.Web.Lists["ImageList"]; 
      SPListItemCollection items = list.Items; 

      foreach (SPListItem item in items) 
      { 
       string title = item[SPBuiltInFieldId.Title].ToString(); // or string title = item.Title; 
       SPFieldUrlValue picture = new SPFieldUrlValue(item["MyPicture"].ToString()); 

       Image image = new Image(); 
       image.ToolTip = title; 
       image.ImageUrl = picture.Url; 
       Controls.Add(image); 
      } 
     } 
    } 
} 

只是一个提示:它总是最好使用SPBuiltInFieldId访问外的开箱SharePoint中的列。

另外,在您的示例代码中...如果您的列表中有多个listitem,那么您遇到了麻烦。您将为每个listitem使用相同的Web控件(例如标签),并在每次迭代中将它们添加到Controls集合中。