投稿

12月, 2012の投稿を表示しています

ASP.NET GridView カラムにアクセスできない時は・・・

GridView のカラムにアクセスしようとしても、AutoGenerateColumns="true" だと Columns.Count が 0 になります!

AutoGenerateColumns="false" にして列定義をするとコードビハインドから Columns コレクションにアクセスできるようになります。

http://stackoverflow.com/questions/3819247/gridview-hide-column-by-code

ASP.NET 開発サーバーでのプロジェクト実行

イメージ
元々IIS上で動かしていたプロジェクトを Visual Studio の開発サーバーで動作させようとすると、以下のエラーが出ることがあります。

このプロジェクトを開くには、仮想ディレクトリを構成する必要があります。今すぐ仮想ディレクトリを作成しますか?



これは、プロジェクトの Web.config で「IISを使います」という指定がされているため開発サーバーで動作させることができないためです。UseIIS に False を設定することでプロジェクトを開発サーバーで動作させることができるようになります。

Web.config 設定箇所: ProjectExtensions - VisualStudio - FlavorProperties - WebProjectProperties - UseIIS






HTMLエンコードツール

blogger で Syntax Highlighter を使おうとしても、実装コードそのままではうまくハイライトされません。コードの特殊文字をエンティティ化しないといけないみたいなので、ツールを作ってみました。

置き換える文字は「&」、「>」、「"」、「'」の4つです。












WPF コンテキストメニューを作ってみよう!

今回は簡単なコンテキストメニューを実装してみます。
WPF の コンテキストメニューは FrameworkElement のプロパティですので Button、RadioButton、CheckBox、TextBlock などのコントロールで利用できます。

実装方法はコントロールの ContextMenu クラスに MenuItem を割り当てます。
ここでは Style を使ってコンテキストメニューを用意していますが、コントロールに直接定義することもできます。

<Grid> <Grid.Resources> <!-- コンテキストメニュー --> <StyleTargetType="Button"> <SetterProperty="ContextMenu"> <Setter.Value> <ContextMenu> <MenuItemHeader="1"/> <MenuItemHeader="2"/> <MenuItemHeader="3"/> </ContextMenu> </Setter.Value> </Setter> </Style> </Grid.Resources> <ButtonContent="Button"Name="button1"Height="23"Width="75"> <!-- これでもいけます --><!--<Button.Con…

WPF テンプレート編集

イメージ
WPF ではテンプレートを編集することで、簡単に見た目を変えることができます。今回は、RadioButton に Button の外観を設定してオプションボタンを作成してみます。 (エクセルにあるやつです。)


1.ExpressionBlend で RadioButton のテンプレートをコピーして編集します。
コンテキストメニューの「テンプレートの編集」 →「コピーして編集」







2.デフォルトで使われている BulletDecorator を Button コントロールに置き換えます。

<Window.Resources> <SolidColorBrushx:Key="CheckBoxStroke"Color="#8E8F8F"/> <Stylex:Key="CheckRadioFocusVisual"> <SetterProperty="Control.Template"> <Setter.Value> <ControlTemplate> <RectangleMargin="14,0,0,0"SnapsToDevicePixels="true"Stroke="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"StrokeThickness="1"StrokeDashArray="1 2"/> </ControlTemplate> </Setter.Value> </Setter> </Style> <StyleTargetType="{x:Type RadioButton}"> <SetterProperty="Foreground"Value="{DynamicResource {x:Static SystemColors.Contro…

匿名メソッド・ラムダ式

匿名メソッドとラムダ式の実装例です。
public MainWindow() { InitializeComponent(); // イベントハンドラのデリゲートthis.button1.Click += newRoutedEventHandler(button1_Click); // 匿名メソッドthis.button1.Click += delegate(object sender, RoutedEventArgs e) { Debug.WriteLine("匿名メソッド"); }; // ラムダ式いろいろ// ラムダ式1行の場合 その1this.button1.Click += (sender, e) => Debug.WriteLine("ラムダで1行"); // ラムダ式1行の場合 その2this.button1.Click += (sender, e) => { MessageBox.Show("こんな風にも書けます"); }; // ラムダ式複数行の場合this.Loaded += (sender, e) => { Debug.WriteLine("複数行で"); Debug.WriteLine("書く場合"); }; } // イベントハンドラprivatevoidbutton1_Click(objectsender, RoutedEventArgse) { Debug.WriteLine("イベントハンドラ"); }

10 行でズバリ!! 匿名メソッドによるイベント ハンドラの実装 (C#)
http://code.msdn.microsoft.com/windowsdesktop/10-C-367d998d

ASP.NET GridView でページング

ASP.NET の GridView でページングを使う実装例です。
ページング時に発生する PageIndexChanging をハンドルしてページインデックス指定とデータの再バインドをします。↓こんな感じ

ASPX
<asp:GridViewID="GridView1"runat="server"AllowPaging="True"Height="292px"onpageindexchanging="GridView1_PageIndexChanging"Width="406px"> </asp:GridView>
C#
protectedvoidPage_Load(objectsender, EventArgse) { if (!IsPostBack) { DataColumn[] PrimaryColumn = newDataColumn[1]; DataTabledatatable = newDataTable(); PrimaryColumn[0] = datatable.Columns.Add("ID", typeof(string)); datatable.Columns.Add("ProductName", typeof(string)); datatable.Columns.Add("Description", typeof(string)); for (inti = 0; i < 100; i++) { datatable.Rows.Add(i.ToString(), "Product : " + i.ToString(), "Note : " + i.ToString()); } datatable.PrimaryKey = PrimaryColumn; Session["data&qu…