- PR -

gridviewにてカスタムコントロールを作成

1
投稿者投稿内容
ポッキー
常連さん
会議室デビュー日: 2004/01/29
投稿数: 43
投稿日時: 2008-04-21 10:59
いつもお世話になっています。

gridviewの選択行についてご教授ください。

VS2005にてgridviewのカスタムコントロールを作成しています。
行がクリックされた場合やキーダウン時にjavascriptにて背景色を変更しています。
背景色変更時にポストバックをさせていないのでサーバ側で選択されている行を取得することができません。
どうにかして選択されている行を取得したいのですが、何かよい方法はないでしょうか?
できればコントロールにプロパティを作成し、選択されている行を配列にできるとよいのですが・・・。

よろしくお願いします。
しょくぱん
常連さん
会議室デビュー日: 2006/05/31
投稿数: 31
投稿日時: 2008-04-21 14:29
type="hidden"のinputタグを配置し、背景色を変更しているjavascriptに
選択行のインデックスをカンマ区切りの文字列にしその隠しフィールドのvalueに設定する処理を加えて、
ポストバック時にその隠しフィールドの文字列を読み取るというのはどうでしょう?
ポッキー
常連さん
会議室デビュー日: 2004/01/29
投稿数: 43
投稿日時: 2008-04-21 15:11
ありがとうございます。

現状ですがGridViewのRenderにてtype="hidden"のinputタグを配置(追加)しています。
行が選択される度にjavascriptにて値を設定してあります。

実際、postbackが起きた場合にhidden自体が取得できません。
LoadPostData時にhiddenの値をプロパティに設定しようと思ったのですが
GridViewではLoadPostDataは使用できないようですし・・・。
どうすればpostback時にhiddenコントロールの値を取得できるのでしょうか?

よろしくお願いします。
しょくぱん
常連さん
会議室デビュー日: 2006/05/31
投稿数: 31
投稿日時: 2008-04-21 15:31
<input type="hidden" name="id_list" runat="server" id="id_list" />
のようにrunatとid属性をタグに設定してやれば
コードビハインドでも参照できます。
ポッキー
常連さん
会議室デビュー日: 2004/01/29
投稿数: 43
投稿日時: 2008-04-21 16:08
ありがとうございます。

うまくいきません。
GridViewのRenderですが、以下になります。
どこが悪いか指摘していただけないでしょうか?

protected override void Render(System.Web.UI.HtmlTextWriter output)
{
// hiddenコントロール作成
output.AddAttribute(HtmlTextWriterAttribute.Name, "_id");
output.AddAttribute(HtmlTextWriterAttribute.Id, "_id");
output.AddAttribute(HtmlTextWriterAttribute.Type, "hidden");
output.AddAttribute(HtmlTextWriterAttribute.Value, "");
output.RenderBeginTag(HtmlTextWriterTag.Input);
output.RenderEndTag();

// 出力先を独自のTextWriterとして出力する
base.Render(new WriterWrapper(output, this));
}

よろしくお願いします。
Access
ぬし
会議室デビュー日: 2002/04/08
投稿数: 829
投稿日時: 2008-04-22 06:08
Hidden/HiddenFieldをダイナミックに追加しないで、デザイン時に定義しておいたらどうでしょうか。

<input id="Hidden1" type="hidden" runat="server" />
or
<asp:HiddenField ID="HiddenField1" runat="server" />
_________________
ASP.NET+Ajaxサンプル集 | JavaScript+Ajaxサンプル集
ポッキー
常連さん
会議室デビュー日: 2004/01/29
投稿数: 43
投稿日時: 2008-04-22 11:13
ありがとうございます。

カスタムコントロールなのでなるべく、その中で完結したかったのですが
やはりデザイン側で配置しておいてもらわないと難しいでしょうか?

loadpostdata以外でサーバーにポストされる値を取得するものはないのでしょうか?

よろしくお願いします。

[ メッセージ編集済み 編集者: ポッキー 編集日時 2008-04-24 11:42 ]
1

スキルアップ/キャリアアップ(JOB@IT)