C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[9]: GridView内のDropDownListの


(過去ログ 69 を表示中)

[トピック内 10 記事 (1 - 10 表示)]  << 0 >>

■39789 / inTopicNo.1)  GridView内のDropDownListのプロパティ変更
  
□投稿者/ はつもの (1回)-(2009/08/13(Thu) 13:28:07)

分類:[ASP.NET (C#)] 

はじめて質問させていただきます。

今、DropDownListをGridViewの中に配置しデータをバインドさせています。
バインドさせているデータは「200908」といった日付のデータで5年分ぐらいです。
やりたいことは、そのバインドさせているデータの初期値を今現在の日付にすることです。
今現在の日付を取得することは出来ています。
今の日付と合致させるために、以下の方法がある事を調べ、GridView外のDropDownListでは以下の方法で出来ていることは確認できました。これを、GridView中のDropDownListに対応させようと思っているのですが、その書き方が分からず困っています。

DropDownList.SelectedIndex = DropDownList.Items.IndexOf(DropDownList.Items.FindByValue("取得した日付"));

DropDownListはFooterとEditにあります。どの様に書けば、GridView中のDropDownListを変更できるのでしょうか。ぜひ教えてください。よろしくお願いいたします。
引用返信 編集キー/
■39812 / inTopicNo.2)  Re[1]: GridView内のDropDownListの
□投稿者/ もりお (37回)-(2009/08/13(Thu) 20:33:26)
2009/08/13(Thu) 22:50:24 編集(投稿者)
No39789 (はつもの さん) に返信
> 今の日付と合致させるために、以下の方法がある事を調べ、GridView外のDropDownListでは以下の方
> 法で出来ていることは確認できました。
> これを、GridView中のDropDownListに対応させようと思っているのですが、その書き方が分からず困ってい
> ます。
> DropDownList.SelectedIndex = DropDownList.Items.IndexOf(DropDownList.Items.FindByValue("取得した日付"));
> DropDownListはFooterとEditにあります。どの様に書けば、GridView中のDropDownListを変更でき
> るのでしょうか。ぜひ教えてください。よろしくお願いいたします。


ItemTemplate のなかに DropDownList があるとすると
こげな感じで取得できます。

foreach(GridViewRow row in GridView1.Rows)
{
    DropDownList dropdownlist = (DropDownList)row.FindControl("DropDownList1");
}


EditTemplate のなかに DropDownList があるとすると
こんな感じで取得できるみたいです。
http://social.msdn.microsoft.com/Forums/ja-JP/vwdexpressja/thread/e87a8924-87c5-44b4-bf8f-6bd4383b6485

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (!isEdit(e)) return; 
    DropDownList dropdownlist = (DropDownList) e.Row.FindControl("DropDownList1");
}

private bool isEdit(GridViewRowEventArgs e)
{
    return (e.Row.RowState == DataControlRowState.Edit) ||
        (e.Row.RowState == (DataControlRowState.Alternate | DataControlRowState.Edit));
}


GridView のカスタムバインドを利用するという手もあるです。

http://dotnetfan.org/blogs/dotnetfanblog/articles/692.aspx

引用返信 編集キー/
■39896 / inTopicNo.3)  Re[2]: GridView内のDropDownListの
□投稿者/ はつもの (2回)-(2009/08/17(Mon) 09:56:02)
もりおさん、お返事が遅くなり申し訳ありません。
ご返信ありがとうございます。
早速ためさせていただいて、結果をご報告いたします。
ありがとうございました。


引用返信 編集キー/
■39897 / inTopicNo.4)  Re[3]: GridView内のDropDownListの
□投稿者/ はつもの (3回)-(2009/08/17(Mon) 12:49:02)
もりおさん

 教えていただいた方法でGridView内の値を取得することが出来ました。今、困っていますのは取得したItemTemplate のなかの DropDownListのSelectedItem.Textを元にEditTemplate のなかの DropDownListの値を変えようとしています。
 ちなみにItemTemplate のなかの DropDownListのSelectedItem.Textを元にGridView外のDropDownListの値の変更は
ItemTemplateのDropDownListから
DropDownList dropdownlist = (DropDownList)row.FindControl("DropDownList1");

DropDownList2.SelectedIndex = DropDownList2.Items.IndexOf(DropDownList2.Items.FindByValue(dropdownlist.SelectedItem.Text));
で受け渡しが出来ている感じです。
これをEditTemplateとFooterのDropDownListに、詳しく言えばItemTemplateが”200905”でEditTemplateやFooterが”200901”から”200912”のデータがバインドされている場合、DropDownListのSelectedItem.Valueの値を”200905”したいのです。その値の受け渡しの仕方をお教え願えないでしょうか。
引用返信 編集キー/
■39909 / inTopicNo.5)  Re[4]: GridView内のDropDownListの
□投稿者/ もりお (43回)-(2009/08/17(Mon) 21:46:28)
No39897 (はつもの さん) に返信
> 今、困っていますのは取得したItemTemplate のなかの DropDownListのSelectedItem.Textを元にEditTemplate のなかの DropDownListの値を変えようとしています。
ItemTemplate の DropDownList は変更可能なのですか?

EditTemplate の DropDownList だけ変更可能にしてデータバインドするほうが
単純明快な気がします。
http://www.atmarkit.co.jp/fdotnet/vs2005db/vs2005db_04/vs2005db_04_02.html

引用返信 編集キー/
■39926 / inTopicNo.6)  Re[5]: GridView内のDropDownListの
□投稿者/ はつもの (4回)-(2009/08/18(Tue) 09:06:23)
No39909 (もりお さん) に返信
> ■No39897 (はつもの さん) に返信
>>今、困っていますのは取得したItemTemplate のなかの DropDownListのSelectedItem.Textを元にEditTemplate のなかの DropDownListの値を変えようとしています。
> ItemTemplate の DropDownList は変更可能なのですか?
>
> EditTemplate の DropDownList だけ変更可能にしてデータバインドするほうが
> 単純明快な気がします。
> http://www.atmarkit.co.jp/fdotnet/vs2005db/vs2005db_04/vs2005db_04_02.html
>

 言葉足らずですみません。
> ItemTemplate の DropDownList は変更可能なのですか?
変更は出来ません。此処ではバインドしたデータを表示しているだけです。

> EditTemplate の DropDownList だけ変更可能にしてデータバインドするほうが
> 単純明快な気がします。

すみません。EditTemplateはItemTemplateと同じデータをバインドしていますので、言われている通りです。

FooterTemplateにバインドさせているデータには200801〜201012までの日付があり、それをFooterTemplateのDropDownListにバインドさせていますが初期値が最初の日付の200801となっています。このバインドさせているデータはEditTemplateやItemTemplateとは違うテーブルからバインドさせています。これを例えば今の時期でしたら200908が初期値として表示されるようにしたいのです。

↓今現在の日付を取得
string YM = DateTime.Today.ToString("yyyy") + DateTime.Today.ToString("MM");

↓DropDownListから”YM”に一致するものを探し初期値に設定
DropDownList1.Items.FindByText(YM).Selected = true;
↓こちらの方法でもやってみました
DropDownList2.SelectedIndex = DropDownList2.Items.IndexOf(DropDownList2.Items.FindByValue(YM));

これをGridView内のFooterTemplateのDropDownListでやりたいのです。
何度も質問をしてしまい申し訳ありませんがアドバイスをいただければ助かります。

引用返信 編集キー/
■39940 / inTopicNo.7)  Re[6]: GridView内のDropDownListの
□投稿者/ もりお (45回)-(2009/08/18(Tue) 15:48:01)
2009/08/18(Tue) 15:49:04 編集(投稿者)

No39926 (はつもの さん) に返信
> これをGridView内のFooterTemplateのDropDownListでやりたいのです。

こんな感じで FooterTemplate の DropDownList を取得できるみたいです。
DropDownList dropdownlistFooter = (DropDownList)GridView1.FooterRow.FindControl("DropDownListFooter");
引用返信 編集キー/
■40118 / inTopicNo.8)  Re[7]: GridView内のDropDownListの
□投稿者/ はつもの (5回)-(2009/08/20(Thu) 15:12:45)
No39940 (もりお さん) に返信

> こんな感じで FooterTemplate の DropDownList を取得できるみたいです。
> DropDownList dropdownlistFooter = (DropDownList)GridView1.FooterRow.FindControl("DropDownListFooter");

ありがとうございます。今まで教えていただいたことを参考にして
まず、ItemTemplateのDropDownList を取得し、
DropDownList dropdownlistItem = (DropDownList)row.FindControl("DropDownList1");
次にその値をFooterTemplate の DropDownListに入れようとしているのですが、そこが分かりません。
とりあえず目的のCellがGrid内のFooterTemplateのCellの6列目なので、そこに取得した値を入れてみようと
Grid.FooterRow.Cells[6].Text = dropdownlistItem.SelectedItem.Text;
としてみたところ、表示は出来ましたが、ここにはDropDownList2があるためTextではなくDropDownListにしたいのです。教えていただければ幸いです。

引用返信 編集キー/
■40195 / inTopicNo.9)  Re[8]: GridView内のDropDownListの
□投稿者/ もりお (50回)-(2009/08/21(Fri) 01:43:05)
No40118 (はつもの さん) に返信
> 次にその値をFooterTemplate の DropDownListに入れようとしているのですが、そこが分かりません。

DropDownList の選択項目をセットするには
SelectedValue プロパティを利用するとよさそうです。

DropDownList instance = (FooterTemplate から取得)
instance.SelectedValue = DateTime.Now.ToString("yyyyMM");
http://msdn.microsoft.com/ja-jp/library/system.web.ui.webcontrols.listcontrol.selectedvalue.aspx


FooterTemplate から DropDownList を取得する方法については No39940 をご覧くださいな。
引用返信 編集キー/
■40372 / inTopicNo.10)  Re[9]: GridView内のDropDownListの
□投稿者/ はつもの (6回)-(2009/08/24(Mon) 16:04:23)
No40195 (もりお さん) に返信

>
> DropDownList instance = (FooterTemplate から取得)
> instance.SelectedValue = DateTime.Now.ToString("yyyyMM");
> http://msdn.microsoft.com/ja-jp/library/system.web.ui.webcontrols.listcontrol.selectedvalue.aspx
>
>
> FooterTemplate から DropDownList を取得する方法については No39940 をご覧くださいな。

ありがとうございました。うまくいきました。なかなかうまく内容をお伝えできなくてすみませんでした。丁寧にご返答いただきましてありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -