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形式)のデータを格納するものです。実行すると、
のような画面になりますが、これをCalenderコントロールを利用して入力できるようにします。まずは、入力画面を作成します。
<%@ Page Language="C#" MasterPageFile="~/admin/admin1.master" AutoEventWireup="true" CodeFile="ExtensionEdit.aspx.cs" Inherits="Test_04_ExtensionEdit" Title="Untitled Page" %>
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の編集画面からは、
このようにCalenderコントロールを利用した入力画面を利用できるようになります。オリジナルの入力画面の説明を行うために、Extensionには機能は実装していません。
Test_04.zip (2.05 kb)
Views(56)
最新のブログ
- Currently 0/5 Stars.
- 1
- 2
- 3
- 4
- 5