我试图确定创建具有自定义属性的 SharePoint WebPart 的最佳做法是什么。我将详细介绍背景,因为我可能以完全错误的方式这样做。
我拿了一张 DevExpress 图表,上面有很多设置。然后我决定公开其中的一些设置,并最终得到一个看起来像这样的 WebPart:
public class MyWebPart : WebPart
{
public DataTable { get; set; }
public String ConnectionString { get; set; }
public String Query { get; set; }
public override void DataBind()
{
UpdateMyTable(ConnectionString, Query);
this.chartControl.DataSource = this.DataTable;
}
}
我需要在此 Web 部件上添加一个完整的负载更多设置,一些是字符串的单个项目,以及对应于系列的其他项目(例如绑定值、图表类型)。因此,我将设置从 WebPart 中移出,最终得到了更类似于以下内容的内容:
public class MyWebPart : WebPart
{
public DataTable { get; set; }
public ChartSettings { get; set; }
public override void DataBind()
{
UpdateMyTable(ConnectionString, Query);
this.chartControl.DataSource = this.DataTable;
}
}
public ChartSettings
{
public List<SeriesSettings> Series { get; set; }
}
我使我的设置类可序列化,并在我的 Web 部件的属性上添加了一个 Personalizable 属性。这可以通过网络正常工作。
如果我尝试在 SharePoint 设计器中打开页面,但它会抱怨它无法从其字符串表示中创建 ChartSettings(和 DataTable)。我了解到这是因为设置公开为字符串。显然DataTable我可以抑制序列化。
我的问题最终是,我是否遵循正确的方法,将设置转移到课程中?或者我应该将所有设置保留在我的 webpart 上(将大量系列设置保存在不同的数组中会很麻烦),还是有完全不同的方法?如果您可以向我指出任何支持您的建议的参考资料(例如 MSDN),那将不胜感激。