9 30

Read this article in your language


BlogEngin.NET Extensionの作り方(3)で紹介したので、Extension Managarの利用方法は大まかに理解して頂けたと思いますが、今までの方法は、Extension Managarがパラメータにより自動で表示してくれるものです。もっと複雑な内容を表示しようと思うと、パラメータ指定だけでの実装は難しいでしょう。しかしBlogEngine.NETは、このような場合にも対応できるように入力ページを独自のページに代用することが可能です。ExtensionManagerのSetAdminPageメソッドを利用して、ページをオリジナルのものに指定できます。

今回の説明では、Calenderコントロールを利用して、日付を入力する画面を実装する方法を説明していきます。
using BlogEngine.Core.Web.Controls;

/// 
/// BlogEngin.NET Extensionの作り方(4)のサンプル 
/// 
[Extension("BlogEngin.NET Extensionの作り方(4)のサンプル", "1.0", "Tadahiro Higuchi")] 
public class Test_04
{
    static protected ExtensionSettings _settings = null;

    public Test_04()
    {
        ExtensionSettings settings = new ExtensionSettings("Test_04");
        settings.AddParameter("date");
        settings.AddValue("date", System.DateTime.Now.ToString("yyyy/MM/dd"));
        settings.IsScalar = true;

        ExtensionManager.ImportSettings(settings);
        _settings = ExtensionManager.GetSettings("Test_04");
    }
}

このように、"date"というフィールドに日付(YYYY/MM/DD形式)のデータを格納するものです。実行すると、

Test04_1

のような画面になりますが、これをCalenderコントロールを利用して入力できるようにします。まずは、入力画面を作成します。

<%@ Page Language="C#" MasterPageFile="~/admin/admin1.master" AutoEventWireup="true" CodeFile="ExtensionEdit.aspx.cs" Inherits="Test_04_ExtensionEdit" Title="Untitled Page" %>

設定サンプル: Test_04

   
日付
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using BlogEngine.Core.Web.Controls;

public partial class Test_04_ExtensionEdit : System.Web.UI.Page
{
    static protected ExtensionSettings _settings = null;

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            _settings = ExtensionManager.GetSettings("Test_04");
            txtDate.Text = _settings.GetSingleValue("date");
        }
    }

    protected void btnSave_Click(object sender, EventArgs e)
    {
        _settings.UpdateScalarValue("date", txtDate.Text);
        ExtensionManager.SaveSettings("Test_04", _settings);
        Response.Redirect(Request.RawUrl);
    }

    protected void Calendar1_SelectionChanged(object sender, EventArgs e)
    {
        txtDate.Text = Calendar1.SelectedDate.ToString("yyyy/MM/dd");
    }
}
BlogEngine.NETのルート配下に「Test_04」フォルダを作成して、ExtensionEdit.aspxを作成します。作成時に「マスタページを選択する」にチェックを入れて、/admin/admin1.masterを指定して作成します。次にExtensionフォルダに
using BlogEngine.Core.Web.Controls;

/// 
/// BlogEngin.NET Extensionの作り方(4)のサンプル 
/// 
[Extension("BlogEngin.NET Extensionの作り方(4)のサンプル", "1.0", "Tadahiro Higuchi")] 
public class Test_04
{
    static protected ExtensionSettings _settings = null;

    public Test_04()
    {
        ExtensionSettings settings = new ExtensionSettings("Test_04");
        settings.AddParameter("date");
        settings.AddValue("date", System.DateTime.Now.ToString("yyyy/MM/dd"));
        settings.IsScalar = true;

        // ページの指定
        ExtensionManager.SetAdminPage("Test_04", "~/Test_04/ExtensionEdit.aspx");

        ExtensionManager.ImportSettings(settings);
        _settings = ExtensionManager.GetSettings("Test_04");
    }
}
このように、SetAdminPageメソッドの引数に、作成されたオリジナル画面(~/Test_04/ExtensionEdit.aspx)までのパスを指定します。これでExtensionの編集画面からは、
Test04_2
このようにCalenderコントロールを利用した入力画面を利用できるようになります。オリジナルの入力画面の説明を行うために、Extensionには機能は実装していません。

Test_04.zip (2.05 kb)


Views(56)

最新のブログ

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
タグ:

コメント

コメントを書く


(アイコンを表示しますか Gravatar )  

  Country flag

biuquote
  • コメント
  • プレビュー
Loading