- PR -

ASP.NET datagrid の EditItemTemplate内のobjectのプロパティをコントロールしたい

1
投稿者投稿内容
大ベテラン
会議室デビュー日: 2003/09/16
投稿数: 193
お住まい・勤務地: 千葉県
投稿日時: 2005-10-13 11:06
datagrid の EditItemTemplate 内に
 dropdownlist と textbox を置き
 編集ボタンを押下されたら、dropdownlist にて 選択された内容により
 textbox を 表示したり 非表示にしたりしたいのですが

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=16518&forum=7
 のおかげで dropdownlist  の selectedindexchanged のイベントまでは
 取得できたのですが

 この、イベント内にて dropdownlist の selectedivalue の取得も
 textbox の プロパティの変更もできません

DDL_Reason.SelectedItem.Text を 取得しようとするとオブジェクトが存在しませんという
 エラーになります
 DDL_Reason_SelectedIndexChanged のコーディングは下記の通りです

-------------------------------------------------------------
Public Sub DDL_Reason_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DDL_Reason_event.SelectedIndexChanged

    dim f As System.Web.UI.WebControls.DataGridCommandEventArgs
Dim line As DataGridItem = DataGrid1.Items(f.Item.ItemIndex)
Dim DDL_Reason As DropDownList = CType(line.FindControl("DDL_Reason"), DropDownList)
Dim txtbox As textbox = CType(line.FindControl("Txt_Reason"), textbox)

if DDL_Reason.SelectedItem.Text = "○" then
txtbox.visible = true
else
txtbox.visible = false
end if

End Sub
---------------------------------------------------------------

 private sub だと エラーになったため Public Sub を使用し
  datagrid の object を 触りたいがため
 無理やり
      dim f As System.Web.UI.WebControls.DataGridCommandEventArgs
   を指定してみました が
   こんな姑息な手段がまずいのだろうと、想像しつつも

    SelectedIndexChangedイベント にて datagrid 内の オブジェクト を 触るには
    どうすればいいのか 教えていただけませんでしょうか

SE卵
大ベテラン
会議室デビュー日: 2004/10/22
投稿数: 135
投稿日時: 2005-10-13 12:15
どうも、SE卵です。

コード:
Public Sub DDL_Reason_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DDL_Reason_event.SelectedIndexChanged 

Dim ddl As DropDownList
'' これでDDL_Reason取得
ddl = CType(sender, DropDownList)

'' DDL_Reasonの行のほかのコントロールを取得
'' したければddl.Parent.FindControl("コントロールID")

End Sub

todo
ぬし
会議室デビュー日: 2003/07/23
投稿数: 682
投稿日時: 2005-10-13 12:18
> Dim line As DataGridItem = DataGrid1.Items(f.Item.ItemIndex)

Dim line As DataGridItem = DataGrid1.Items(DataGrid1.EditItemIndex)
SE卵
大ベテラン
会議室デビュー日: 2004/10/22
投稿数: 135
投稿日時: 2005-10-13 12:21
あと、補足
Protected で動作しますよ。

コード:
Public Sub DDL_Reason_SelectedIndexChanged
             ↓ 
Protected Sub DDL_Reason_SelectedIndexChanged



大ベテラン
会議室デビュー日: 2003/09/16
投稿数: 193
お住まい・勤務地: 千葉県
投稿日時: 2005-10-13 13:34
引用:

SE卵さんの書き込み (2005-10-13 12:21) より:
あと、補足
Protected で動作しますよ。

コード:
Public Sub DDL_Reason_SelectedIndexChanged
             ↓ 
Protected Sub DDL_Reason_SelectedIndexChanged







SE卵さん todoさん
ありがとうございました。
実現できました

debug モード で sender が dropdownlist を 指していることは
解ったのですが キャストすればよかったんですねぇ  
parent も勉強します

みなさん 本当にありがとうございました
1

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