|
ASP.NET について
● いわゆる覚え書き。自分が学んだことを忘れないように残しておこうと思います。
● 目次 ●
・ はじめに
・ ボタンクリック時に次のページへ移動する
・ ボタンクリック時に新しいウィンドウを開く
・ DataGridの編集ボタンを押した時に、ドロップダウンリストを正しく表示させる
・ ボタン押下時に確認メッセージを出すには?
・ DataGridの削除ボタンで確認メッセージを出し、キャンセルの時は削除させないようにするには?
・ DataGridの削除ボタンで確認メッセージを出し、応答によって処理を分けるには?
・ 子ウィンドウを開くには?
・ 子ウィンドウで登録したデータを親ウィンドウに反映させるには?
・ 子ウィンドウで登録したデータを親ウィンドウに反映させ、親ウィンドウを更新させるには?
・ ボタンクリック時にXMLファイルをダウンロードするには?
・ パラメータの取得
・ DropDownListに値をセットするには
・ XMLコントロールにSQL Serverから取得したXMLデータを渡す
・ あとがき
はじめに
2003年冬から、とうとう会社でWebアプリを開発することになり、ASP.NETの勉強を始めました。
勉強と言う実践の中で(コワッ)、忘れそうなものを覚書でまとめていきます。
ご注意
※ 私が実行している環境は、VisualStudio.NET 2003 Professionalがインストールされています。
※ OSはWindows XP で、Microsoft SQL Server
2000がインストールされています。
ボタンクリック時に次のページへ移動する
リダイレクトしたいページ名を、Response.Redirect()メソッドに指定する。
private void btDB_Memu_Ref_Click(object
sender, System.EventArgs e)
{
this.Response.Redirect("NewPage.aspx");
}
ボタンクリック時に新しいウィンドウを開く
JavaScript の window.open を、Button1
の Attributes の onclick にセットする。
private void btDB_Date_Click(object sender, System.EventArgs e)
{
Button1.Attributes["onclick"] = "window.open('Calender.aspx','', 'width=250,height=250')";
};
このTIPSについてのコメントを送る
DataGridの編集ボタンを押した時に、ドロップダウンリストを正しく表示させる
※ 編集モードになる前にはラベルで、編集モードにした時にドロップダウンリストにする場合など
// データグリッド編集ボタン押下時の処理
public void OnEdit_DataGrid(object sender, DataGridCommandEventArgs e)
{ // 編集モードにする行をセット
this.DataGrid1.EditItemIndex
=
e.Item.ItemIndex;
// DataGridをデータグリッドに表示
DataGrid1.DataSource =DataTableA;
DataGrid1.DataBind();
// DataGridをデータグリッドに表示
Label
lb = (Label)e.Item.FindControl("lb"); DropDownList ddl = (DropDownList)DataGrid1.Items[0].FindControl("ddl");
ddlBlock.SelectedIndex = int.Parse(lbID_Block.Text);
}
順番を間違えると正常に動作しないので注意。
1. 編集行のセット
2. データグリッドに表示するデータをセットする
3. データグリッドのドロップダウンリストにラベルの値をセットする
このTIPSについてのコメントを送る
記事作成日 : 2004/03/25
記事最終更新日 : まだない。
ボタン押下時に確認メッセージを出すには?
ButtonのAttributesプロパティに、インデクサを用い"onclick"時の処理を登録する
ex)
private
void Page_Load(object sender, System.EventArgs e)
{
Button.Attributes["onclick"] = @"return
confirm('更新します\n\nよろしいですか?');";
}
このTIPSについてのコメントを送る
関連情報 : 今のところなし
学習先 : http://www.atmarkit.co.jp/fdotnet/dotnettips/015confirm/confirm.html
記事作成日 : 2004/03/28
記事最終更新日 : 今のところなし
DataGridの削除ボタンで確認メッセージを出し、キャンセルの時は削除させないようにするには?
ButtonのAttributesプロパティに、インデクサを用い"onclick"時の処理を登録する
ex)
// データグリッドの各行にデータが割り当てられる時の処理
public void OnItemDataBound_DataGrid(object sender, DataGridItemEventArgs
e)
{
//
// このイベントは、データグリッドの各行にデータが割り当てられる毎に発生します。
//
// 行の各列についてループ
foreach(TableCell cell in e.Item.Cells)
{
// このセルの中にある各コントロールについてループ
foreach(Control ctrl in cell.Controls)
{
// このコントロールが Button であるかどうかを判断
if (ctrl is Button)
{
// 削除ボタンに確認メッセージをセット
if (ctrl.ID == "DelButton")
{
Button DelButton = (Button)ctrl;
DelButton.Attributes["onclick"]
=
@"javascript: return confirm ('このレコードを削除します。\n\nよろしいですか?')";
}
}
}
}
}
キャンセルを押した時は、DelButtonを押した時に発生する削除処理は実行されません
このTIPSについてのコメントを送る
関連情報 : 今のところなし
学習先 : http://www.atmarkit.co.jp/fdotnet/dotnettips/015confirm/confirm.html
記事作成日 : 2004/03/18
記事最終更新日 : 今のところなし
DataGridの削除ボタンで確認メッセージを出し、応答によって処理を分けるには?
ButtonのAttributesプロパティに、インデクサを用い"onclick"時の処理を登録する。その時「OK」を選んだ時の処理を記述する
ex)
【 HTML 】
< /form>の直前あたりに、次の分を加える(名前は自由)
<input type="hidden" id="hiddenCommand" name="hiddenCommand">
【 .cs 】
ボタンの設定時に次のコードを使用する
cmdRegister.Attributes["onclick"] =
@"javascript: if(window.confirm('この内容で登録します。\n\nよろしいですか?'))
{ document.forms[0].hiddenCommand.value = 'Register'; } ";
// ボタンの OnClick イベントで次の条件判定をする
public void OnClick_cmdRegister(object sender, System.EventArgs e)
{
if( Request.Form["hiddenCommand"] == @"Register" )
{
// ここに OK 押下時のコードを書く
}
}
このTIPSについてのコメントを送る
関連情報 : 削除ボタンが押された時に「OK,キャンセル」ダイアログを出し、キャンセルしたら処理をさせないようにするには?
学習先 : 職場のTさんより
記事作成日 : 2004/03/18
記事最終更新日 : 今のところなし
子ウィンドウを開くには?
親ウィンドウにJapaScriptのwindow.open()を登録する
//
ページロード時の処理
private void Page_Load(object
sender, System.EventArgs e)
{
Button1.Attributes["onclick"] = "window.open('childWindow.aspx?id=name','',
'width=550,height=300');";
}
|
このTIPSについてのコメントを送る
関連情報 : とくになし
学習先 : とくになし
記事作成日 : 2004/04/14
記事最終更新日 : 今のところなし
子ウィンドウで登録したデータを親ウィンドウに反映させるには?
1) 親ウィンドウにJapaScriptのwindow.open()を登録する。
2) その時に、子ウィンドウからデータを渡したいフィールドのidを引数として渡しておく。
3) 子ウィンドウから、JavaScriptで親ウィンドウのidへデータを渡す
【 親ウィンドウ 】
//
ページロード時の処理
private void Page_Load(object
sender, System.EventArgs e)
{
Button1.Attributes["onclick"] = "window.open('childWindow.aspx?id=name','',
'width=550,height=300');";
}
【 子ウィンドウ 】
// 閉じるボタン押下時の処理
// 閉じる時に親ウィンドウにデータをセットすると仮定
private void btClose_Click(object sender, System.EventArgs e)
{
string id = Request.Params["id"];
StringBuilder sb = new StringBuilder();
sb.Append("<script Language='javascript'>\n");
sb.Append("window.opener.Form1.");
sb.Append(id);
sb.Append(".value= '");
sb.Append(("親ウィンドウに渡したいデータ");
sb.Append("';\n");
// この子ウィンドウを閉じる
sb.Append("window.close();\n");
sb.Append("</");
sb.Append("script>");
// ASP.NET サーバー コントロールが Page のクライアント側のスクリプトブロック
// を出力できるようにします。
this.RegisterClientScriptBlock("closewin", sb.ToString());
}
|
このTIPSについてのコメントを送る
関連情報 : とくになし
学習先 : とくになし
記事作成日 : 2004/04/14
記事最終更新日 : 今のところなし
子ウィンドウで登録したデータを親ウィンドウに反映させ、親ウィンドウを更新させるには?
1) 親ウィンドウにJapaScriptのwindow.open()を登録する。
2) その時に、子ウィンドウからデータを渡したいフィールドのidを引数として渡しておく。
3) 子ウィンドウから、JavaScriptで親ウィンドウのidへデータを渡す
4) 子ウィンドウから、JavaScriptで親ウィンドウのidへデータを渡す
【 親ウィンドウ 】
// ページロード時の処理
private void Page_Load(object
sender, System.EventArgs e)
{
Button1.Attributes["onclick"] = "window.open('childWindow.aspx?id=name&flg=hiddenFlg','',
'width=550,height=300');";
// hiddenコントロールのプロパティが変わったら、更新ボタンを押した時のイベントを起こす、というAttributesを追加
hiddenFlg.Attributes.Add("OnPropertyChange",
GetPostBackEventReference(btUpdate));
}
【 子ウィンドウ 】
// 閉じるボタン押下時の処理
// 閉じる時に親ウィンドウにデータをセットすると仮定
private void btClose_Click(object sender, System.EventArgs e)
{
string id = Request.Params["id"];
string flg = Request.Params["flg"];
StringBuilder sb = new StringBuilder();
sb.Append("<script Language='javascript'>\n");
sb.Append("window.opener.Form1.");
sb.Append(id);
sb.Append(".value= '");
sb.Append(("親ウィンドウに渡したいデータ");
sb.Append("';\n");
// 親ウィンドウのhiddenFlgのValueに値を入れると、hiddenFlgのAttributesにセットされた
// OnPropertyChangeイベントが、btUpdate(更新ボタン)を押す
//hiddenCstNewFlg.Attributes.Add("OnPropertyChange",
GetPostBackEventReference(btCstNameUpdate));
sb.Append("window.opener.Form1.");
sb.Append(flg);
sb.Append(".value= '");
sb.Append(cst_id);
sb.Append("';\n");
// この子ウィンドウを閉じる
sb.Append("window.close();\n");
sb.Append("</");
sb.Append("script>");
// ASP.NET サーバー コントロールが Page のクライアント側のスクリプトブロック
// を出力できるようにします。
this.RegisterClientScriptBlock("closewin", sb.ToString());
}
|
このTIPSについてのコメントを送る
関連情報 : とくになし
学習先 : とくになし
記事作成日 : 2004/04/14
記事最終更新日 : 今のところなし
ボタンクリック時にXMLファイルをダウンロードするには?
1) Responseでダウンロードの準備。保存ダイアログが出た時のファイル名をSample.xmlに指定。
2) XmlTextWriterクラスを作成。出力先をResponse.OutputStreamに指定。→これでローカルにファイルを作らなくてよい
3) データベースから取得したデータでXML書式でデータを格納。結果はResponse.OutputStreamへ。
using System.Xml;
// XMLファイルダウンロードボタンクリック時の処理
private void button_Click(object sender, System.EventArgs e)
{
GenerateXml();
}
// XMLファイルの作成
private void GenerateXml()
{
Response.AddHeader("Content-Disposition","attachment;filename=Sample.xml");
Response.ContentType = "application/octet-stream";
// XmlTextWriterの出力先を、Response.OutputStreamに指定する
XmlTextWriter tw
= new XmlTextWriter(Response.OutputStream, null);
// 目的のフォーマットを設定する
tw.Formatting = Formatting.Indented;
// XML作成開始
tw.WriteStartDocument();
tw.WriteStartElement("サンプルテーブル");
// マスター情報を取得するSQL文
string sql = GenerateMasterInfoSQL();
// SQLの結果をテーブルに取得
DataTable dt = TypeR.SqlWeb.GetDataTable("MasterInfoTable",
sql);
// テーブルをループ
foreach(DataRow dr in dt.Rows)
{
tw.WriteStartElement("サンプル");
tw.WriteElementString("サンプル名",
dr["cstNAME"].ToString());
tw.WriteElementString("サンプルコード",
dr["CODE"].ToString());
tw.WriteElementString("サンプルタイトル",
dr["TITLE"].ToString());
tw.WriteEndElement();
}
tw.WriteEndElement();
tw.WriteEndDocument();
//後処理を行う
tw.Flush();
tw.Close();
this.Response.End();
}
|
このTIPSについてのコメントを送る
関連情報 : 今のところなし
学習先 : 職場のIさんより
記事作成日 : 2004/08/07
記事最終更新日 : 今のところなし
パラメータの取得
test.aspx?id=categoryID
のように渡した値を取得するには、Request.QueryString を使う。
// クエリ文字列から渡された値の取得
string id = Request.QueryString["ID"];
|
このTIPSについてのコメントを送る
関連情報 : 今のところなし
学習先 : 今のところなし
記事作成日 : 2005/03/19
記事最終更新日 : 今のところなし
DropDownListに値をセットするには
データベースから取得したデータをWebフォームに貼り付けたDropDownListに設定する方法。
1. アクセス修飾子を protected
に設定し、ListItem配列型のメソッド作成する。
2. データベースから取得した値でListItemクラスを作成し、ArrayListにつめる。
3. ArrayListのToArray()メソッドで、ListItem配列にして返値する。
(コードの下に続く)
using System.Collections;
using System.Data;
// 中略
protected ListItem[]
GetListData()
{
//
ArrayListの準備
ArrayList al = new ArrayList();
//
DataSetにデータベースから値を取得
DataSet
ds = (データベースから値を取得);
//
取得したDataSetのすべての行にアクセスし、ListItemを作成する
foreach (DataRow dr in ds.Tables[0].Rows)
{
//
表示用TextにNAME、値用のValueにIDをそれぞれ設定する
ListItem
li = new ListItem();
li.Text
= dr["NAME"].ToString();
li.Value
= dr["ID"].ToString();
al.Add(li);
}
//
ArrayListをListItem配列に
return
(ListItem[])al.ToArray(typeof(ListItem));
} |
4. DropDownListのプロパティ画面で、DataSouceプロパティに
GetListData()メソッドを設定する。(下図参照)
5. DropDownListのプロパティ画面で、DataValueフィールドにValueを設定する。(下図参照)
6. DropDownListのプロパティ画面で、DataTextフィールドにTextを設定する。(下図参照)
5.、6.、の手順を忘れると、ListItemのValueの値(ID)がSelectedValueで取得できません。
何度取得しても、SelectedValueにはTextに設定した値(NAME)が表示されてしまい、私はこれでかなりハマりました…(笑)
DropDownListのSelectedValueで選択されたValueを取得するには、5.、6.の作業が必要です。
このTIPSについてのコメントを送る
関連情報 : 今のところなし
学習先 : プロフェッショナル ASP.NET 上 基本編 (インプレス)
記事作成日 : 2005/09/07
記事最終更新日 : 今のところなし
XMLコントロールにSQL Serverから取得したXMLデータを渡す
1. SQL Server
からデータを取得し、DataSetにセットする。
2. XmlDataDocumentクラスのコンストラクタ引数にDataSetを渡す。
3. XML WebサーバーコントロールのDocumentプロパティにXmlDataDocumentクラスのインスタンスを渡す。
※FOR XML句を使った効率的な方法があったら知りたいなぁ・・・
このTIPSについてのコメントを送る
キーワード : XML Webコントロール, Webサーバーコントロール,
DBから取得したデータをXMLコントロールにセット
SQL Server から取得したデータを XMLコントロールにセット
関連情報 : 今のところなし
学習先 : 今のところなし
記事作成日 : 2005/09/15
記事最終更新日 : 今のところなし
あとがき
記事作成日 : 2004/01/26
記事最終更新日 : まだない。
内容的におかしいところ、見づらい個所(色使い)などございましたらご指摘ください。
同じようにASP.NETを利用されている方からの苦労話も大歓迎です。
モンドリィの自習室 - トップへ
- 悶絶C#へ
|