0

私の Web パーツには、answertype ドロップダウンリストを使用して多くの質問が必要です。設定では、ツールパーツを使用して質問を構成できます。一問一答作品の設定を書いたり読んだり。コードが x-more の質問に対してどのように機能するかわかりません (どの方法で冗長コードを使用する必要があるか - コードをどこでどのようにカプセル化できますか? ヒントはありますか、それとも興味深い Web サイトを知っていますか? 私はあなたが私の問題を理解してくれることを願っています; そうでなければ私はもっと詳細を書きます...

ありがとう

さらに、ツールパーツのコード (の重要な部分):

public class FeedbackToolpart : ToolPart
{
    Label ques1Lab, ans1Lab, typ1Lab;
    DropDownList ddList;
    List<Question> outputList;
    ...

    public FeedbackToolpart() : base() { this.Title = "Bewertungseinstellungen"; }

    protected override void CreateChildControls()
    {
        parentWebPart = (Feedbackwebpart)this.ParentToolPane.SelectedWebPart;
        ...
        ddList = new DropDownList();
        ddList.ID = "TheCheckBoxList";
        ddList.Items.Add("");
        ddList.Items.Add("Schieberegler");
        ddList.Items.Add("Checkboxen");
        ddList.Items.Add("Textbox");
        ddList.SelectedIndexChanged += new EventHandler(ddList_SelectedIndexChanged);
        ddList.AutoPostBack = true;

        ddList.SelectedValue = (parentWebPart.MyValue != null) ? parentWebPart.MyValue[0].answType : "Textbox";

        this.Controls.Add(pan);
        base.CreateChildControls();            
    }

    protected void ddList_SelectedIndexChanged(object sender, EventArgs e) { ... }

    public override void ApplyChanges()
    {
        parentWebPart = (Feedbackwebpart)this.ParentToolPane.SelectedWebPart;
        outputList = new List<Question>();
        outputList.Add(new Question(texQuestion.Text, texAnswers.Text, ddList.SelectedValue));
        parentWebPart.MyValue = outputList;           
    }
}
4

1 に答える 1

1

1つの設計アプローチは次のとおりです。

すべての質問の要素を含むXMLを作成します(テキスト、UIコントロールタイプ、および/または必要なその他の特性をカプセル化します)。.NETクラスを作成して、標準の.NETXMLシリアライザーによってXMLのコンテンツを逆シリアル化します。ソリューションの種類(ファームまたはサンドボックス)に応じてアクセスできるSharePointのどこかにXMLファイルを展開します。その内容は、HTTPまたはSPOMのいずれかで読み取ることができます。デシリアライズした後、ループ内の質問オブジェクトの配列を列挙し、質問ごとに指定された入力コントロールを持つテーブル行を作成します。

---フェルダ

于 2012-05-12T09:16:57.980 に答える