получить индекс выбранной строки из динамического выпадающего списка выбора

StackOverflow https://stackoverflow.com/questions/928131

Вопрос

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

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 не вызывается?

Это было полезно?

Решение

Отличная работа У меня все работает абсолютно нормально

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;

Другие советы

Вам нужно будет немного поработать, поскольку я не могу предоставить 100%-ную специфику, не написав код и не протестировав его здесь самостоятельно, чего я в настоящее время не могу сделать, но код должен соответствовать этим строкам.

внутри ddlmgr_SelectedIndexChaged,

  1. укажите вашего отправителя в выпадающем списке
  2. получите доступ к свойству детали в выпадающем списке.
  3. Убедитесь, что это элемент сетки (или repeateritem, или что угодно еще, вы поняли идею).
  4. Если это так, получите items itemindex.Если нет, обратитесь к его родительскому свойству.
  5. Продолжайте, пока не найдете нужный объект Row.

Надеюсь, это поможет.Если нет, возможно, кто-то с немного более либеральным доступом может вмешаться

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;

Выпадающий список ddltxt = (Выпадающий список) отправитель;строка temp2 = ddltxt.SelectedItem.Текст;строка temp3 = ddltxt.SelectedItem.Значение;строка temp = ddltxt.ID.toString();int strlength = темп.Длина;string strLastchar = временная подстрока(strlength - 1, 1);int intlastchar = int.Синтаксический анализ(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))
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top