SharePoint
サイトの単純なRSS/Atom
アグリゲータwebpart(私はエンタープライズライセンスを持っていないため、ootbの部分は使用できません)を作成しようとしているのは初心者C#
です。ラベルがこれから削除されました.Controlsが再び現れます
私は3つのボタンがあります。
- ユーザーから
URI
を受け取り、フィードを表示するラベルを構築し、すべてが表示されたクリアthis.Controls;
- クリアフィードにそれを追加しようとした新しいフィードを、デフォルトのフィードの
ArrayList
をデフォルトのURIs
に設定し、それぞれをラベルに変換します(this.Controls
から削除します)。this.Controls
にも追加します。
フィードをクリアすると、デフォルトに戻っているようにうまくいきます。ただし、すべてのフィードをクリアして新しいフィードを追加しようとすると、デフォルトが追加されます(一度に1つの新しいフィードしか追加できません。新しいものは古いものを上書きします)。私はこれが、コントロールの追加/削除機能を完全に理解していないためだと思う。以下のコードは、次のとおりです。
ArrayList viewedFeeds = new ArrayList();
ArrayList defaultFeeds = new ArrayList(); //Contains several default feeds, e.g. BBC news (http://feeds.bbci.co.uk/news/rss.xml)
private void newFeed_Click(object sender, EventArgs e)
{
renderFeed(userText.Text);
}
private void clearFeeds_Click(object sender, EventArgs e)
{
clearAllFeeds();
}
private void defaultFeeds_Click(object sender, EventArgs e)
{
clearAllFeeds();
initialiseFeedViewer();
}
private void clearAllFeeds()
{
foreach (Label feed in viewedFeeds)
{
this.Controls.Remove(feed);
}
viewedFeeds.Clear();
}
private void initialiseFeedViewer()
{
foreach (string uri in defaultFeeds)
renderFeed(uri);
}
private void renderFeed(String uri)
{
try
{
Label feed = new Label();
// Create a Syndicated feed reader, parse the XML and add the relevant text to the label "feed"
feed.BorderStyle = System.Web.UI.WebControls.BorderStyle.Double;
viewedFeeds.Add(feed);
this.Controls.Add(feed);
}
catch (Exception ex)
{
//Print an error message (e.g. If the URI does not link to a suitable feed
}
}
'Label'に' Name'プロパティがないようです。これは 'WebControl.Label'ですか? 'ArrayList'についての頭のおかげで、私は' Java'モードで立ち往生しました – Landric
また、Visual Studioの呼び出し階層を調べると、 'initialiseFeedViewer()'には2回の呼び出ししかありません。プログラムの開始と、「デフォルトのフィード」ボタンがクリックされたときのものである。 – Landric
ええと、label.Nameの代わりにlabel.IDを試してください – Odnxe