カスタムWebパーツプロパティを設定するために、SharePointリストをドロップダウンリストにロードできますか?
-
16-10-2019 - |
質問
私はあなたにそれを行う方法を示すと主張するこの投稿を見つけました:
しかし、指示に注意深く従いて、コードをダウンロードした後、私はそれを期待どおりに機能させることができませんでした。
同様の質問を投稿しました ここ, 、しかし、回答は、静的値でドロップダウンリストをロードする方法を教えてくれました。 SharePointリストからロードしたいと思います。
解決
あなたが言った安倍:
ソースをダウンロードしましたが、アイテムの静的ドロップダウンリストでのみ動作しているようです。私はあなたの指示に従いましたが、内部リストを使用してドロップダウンを取得することはできませんでした。これは、あなたが提供した指示に従うことで行うことができますか?もしそうなら、そのために作業コードを投稿させることは可能でしょうか?
ソースでは、のオーバーライドを追加する必要があります CreateEditorParts
public override EditorPartCollection CreateEditorParts() {
ArrayList editorArray = new ArrayList();
MyEditorPart edPart = new MyEditorPart();
edPart.ID = this.ID + "_editorPart1";
editorArray.Add(edPart);
EditorPartCollection editorParts = new EditorPartCollection(editorArray);
return editorParts;
}
そのため、Webパートはカスタムエディターパーツを使用します。
他のヒント
データベースから読み取るカスタムツールパートがありますが、代わりにスプリストから読むように変更できます
public class CustomToolPart : ToolPart {
protected override void CreateChildControls() {
ddlCustom = new DropDownList();
ddlCustom.ID = "ddlCustom";
ddlCustom.ToolTip = "Custom";
try {
using (SqlConnection conn = new SqlConnection(this.webPart.ConnectionString)) {
conn.Open();
SqlCommand cmd = new SqlCommand(@"select id,name from [sometableftdb_forums]", conn);
SqlDataAdapter rs = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
rs.Fill(ds, "Data");
ddlCustom.DataSource = ds;
ddlCustom.DataTextField = "name";
ddlCustom.DataValueField = "id";
ddlCustom.DataBind();
ddlCustom.Items.Insert(0, new ListItem("(choose)", "0"));
}
//instead add code here for SPSite/SPWeb/SPList
} catch (SqlException ex) {
ddlCustom.Items.Insert(0, new ListItem("(sql error)", "0"));
}
ListItem item = ddlCustom.Items.FindByValue((webPart != null ? webPart.CustomValueId : 0).ToString());
if (item != null) {
ddlCustom.SelectedIndex = -1;
item.Selected = true;
}
Controls.Add(ddlCustom);
}
}
所属していません sharepoint.stackexchange