2009-05-29 8 views
1

Je sais que la question est un peu saccadée et peut-être trompeuse, mais j'ai une vue gridview avec des listes déroulantes sur les lignes. J'ai créé un AddHandler et un Delegate pour SelectedIndexChanged et il arrive au sub. Voici le code pour que:sélectionnez l'index de ligne de la sélection de liste déroulante dynamique

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 

Comment puis-je obtenir Id si GridView_RowCommand n'est pas appelé de la ligne?

Répondre

0

Grands travaux Fonctionne bien pour moi absolument

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

Vous aurez besoin de faire un peu de travail, car je ne peux pas fournir 100% de détails sans écrire le code et le tester moi-même ici, ce que je ne peux pas faire pour l'instant, mais le code devrait lignes.

dans le ddlmgr_SelectedIndexChaged,

  1. votre expéditeur jette un accès DropDownList
  2. la propriété de la partie dropdownlist.
  3. Vérifiez que c'est un GridItem (ou un repeateritem ou peu importe, vous obtenez l'idée)
  4. Si oui, procurez-vous les éléments itemindex. Si ce n'est pas le cas, accédez à sa propriété parente.
  5. Continuez jusqu'à ce que vous trouviez votre objet Row.
+0

Je suis arrivé dans votre étape un beau et j'ai pu accéder à la valeur sélectionnée de la dropdownlist. Cependant, ma liste déroulante n'a pas de propriété partielle. ddl.part ??? – Eric

+0

Désolé, c'était une mauvaise faute de frappe de ma part. Cela aurait dû lire "Accéder à la propriété parente" –

+0

pourriez-vous éventuellement poster du code. Je n'ai jamais vraiment vu cette méthode auparavant. Juste du code qui pourrait me donner une idée générale. – Eric

1

Espérons que cela aide. Sinon, peut-être quelqu'un avec un peu un accès plus libéral peut carillon

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

Je pense que je vais adopter une approche différente. J'ai essayé cela et je comprends le concept, cela ne semble pas fonctionner dans cette situation. Je posterai la réponse quand je le comprendrai. Merci! +1 – Eric

0

DropDownList ddltxt = (DropDownList) expéditeur; chaîne temp2 = ddltxt.SelectedItem.Text; chaîne temp3 = ddltxt.SelectedItem.Value; chaîne temp = ddltxt.ID.ToString(); int strlength = temp.Length; chaîne strLastchar = temp.Substring (strlength - 1, 1); int intlastchar = int.Parse (strLastchar.ToString()); chaîne commonpart = temp.Substring (0, strlength - 1);

if (intlastchar == 1) 
    { 
     string targetdropdownid = commonpart + "2"; 
     DropDownList targetlist = (DropDownList)TableRow11.FindControl(targetdropdownid); 
     using (conn = new SqlConnection(ConnectionString)) 
Questions connexes