2009-05-29 6 views
1

Я знаю, что вопрос немного изменчив и, возможно, вводит в заблуждение, но у меня есть gridview с dropdownlists на строках. Я создал AddHandler и делегат для SelectedIndexChanged, и он попадает в sub. Вот код, который:получить выбранный индекс строки динамического списка выпадающего списка

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 

Как я могу получить Роу Id, если GridView_RowCommand не вызывается?

ответ

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. Проверьте, что это GridItem (или повторитель или в зависимости от того, вы получите эту идею)
  4. Если да, получите элементы itemindex. Если не получить доступ к его родительскому свойству.
  5. Продолжайте, пока не найдете свой объект Row.
+0

я получил через шаг одного штрафа, и я был в состоянии получить доступ к выбранное значение DropDownList. Однако мой 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) отправителя; string temp2 = ddltxt.SelectedItem.Text; string temp3 = ddltxt.SelectedItem.Value; string temp = ddltxt.ID.ToString(); int strlength = temp.Length; string strLastchar = temp.Substring (strlength - 1, 1); int intlastchar = int.Parse (strLastchar.ToString()); string commonpart = temp.Substring (0, strlength - 1);

if (intlastchar == 1) 
    { 
     string targetdropdownid = commonpart + "2"; 
     DropDownList targetlist = (DropDownList)TableRow11.FindControl(targetdropdownid); 
     using (conn = new SqlConnection(ConnectionString)) 
Смежные вопросы