2009-05-29 27 views
1

私は質問が少し不安定で、誤解を招く可能性があることを知っていますが、私は行のドロップダウンリストを持つgridviewを持っています。 SelectedIndexChangedのAddHandlerとDelegateを作成し、それをサブに取得します。動的ドロップダウンリスト選択の選択された行インデックスを取得

AddHandler ddlmgr.SelectedIndexChanged, AddressOf ddlmgr_SelectedIndexChanged 
Public Delegate Sub DropDownList_SelectedIndexChanged(ByVal sender As Object, ByVal e As DropDownList_SelectedIndexChanged) 

Protected Sub ddlmgr_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) 


End Sub 

GridView_RowCommandが呼び出されない場合、どのようにして行のIDを取得できますか?

答えて

0

偉大な仕事

DropDownList ddl = (DropDownList)sender; 
Control p = ddl.Parent; 
//you are going to loop because the immediate 
//parent may not be the repeater item but instead a 
//container control of some kind (say a template) 
while (p.GetType() != typeof(RepeaterItem)) 
{  
    p = p.Parent;  
    if (p == null) 
     return; //we have reached the top of the control tree 
} 
RepeaterItem ri = (RepeaterItem)p; 
int index = ri.ItemIndexreturn index; 
1

コードを書き留めてここでテストすることなく100%の詳細を提供することはできませんが、私は現時点では実行できませんが、これらのコードに沿って行う必要がありますライン。 ddlmgr_SelectedIndexChaged内

は、

  1. は、DropDownListの
  2. アクセスにDropDownListコントロールの一部のプロパティをあなたの送信者をキャスト。
  3. それをある確認してくださいその場合はアイテムitemindexを取得し、GridItem(またはrepeateritemまたはいずれか、あなたがアイデアを得る)
  4. です。親プロパティにアクセスしない場合。
  5. Rowオブジェクトを見つけるまで続行します。
+0

私はあなたのステップ1罰金を通じて得たと私はDropDownListコントロールの選択された値にアクセスすることができました。しかし、私のドロップダウンリストにはパートプロパティはありません。 ddl.part ??? – Eric

+0

申し訳ありませんが、それは私の部分の誤ったタイプミスでした。それは "親プロパティへのアクセス" –

+0

を読んで、コードを投稿する可能性があります。私は以前にこの方法を見たことがありませんでした。私に一般的な考えを与えることができるちょうどコード。 – Eric

1

これは役立ちます。ない場合は、おそらく、もう少しリベラルなアクセス権を持つ誰かが

DropDownList ddl = (DropDownList)sender; 
Control p = ddl.Parent; 

//you are going to loop because the immediate 
//parent may not be the repeater item but instead a 
//container control of some kind (say a template) 
while (p.GetType() != typeof(RepeaterItem)) 
{ 
    p = p.Parent; 
    if (p == null) return; //we have reached the top of the control tree 
} 
RepeaterItem ri = (RepeaterItem)p; 
int index = ri.ItemIndex 
return index; 
+0

私は別のアプローチをとると思います。私はこれを試して、私はコンセプトを理解して、それだけではこのような状況で動作していないようです。私はそれを把握するときに私は答えを投稿します。ありがとう! +1 – Eric

0

のDropDownList ddltxt =(DropDownListコントロール)送信者にチャイムができます。 文字列temp2 = ddltxt.SelectedItem.Text; 文字列temp3 = ddltxt.SelectedItem.Value; 文字列temp = ddltxt.ID.ToString(); int strlength = temp.Length; 文字列strLastchar = temp.Substring(strlength - 1、1); int intlastchar = int.Parse(strLastchar.ToString()); 文字列commonpart = temp.Substring(0、strlength - 1);私のために絶対に罰金作品

if (intlastchar == 1) 
    { 
     string targetdropdownid = commonpart + "2"; 
     DropDownList targetlist = (DropDownList)TableRow11.FindControl(targetdropdownid); 
     using (conn = new SqlConnection(ConnectionString)) 
関連する問題