2013-08-15 3 views
1

Итак, я знаю, что заголовок невелик, но я попробую и объясню.Задайте все значения одинаковыми в поле шаблона элемента Gridview (Dropdown)

У меня есть gridview с выпадающим списком в нем как поле шаблона. Я хочу, чтобы это было так, что если кто-то выберет что-то в раскрывающемся списке, все выпадающие списки в gridview будут изменены на это значение. Это то, о чем я думаю, но смотрю комментарий:

protected void dcDdl_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     if (recPartDdl.SelectedItem.Text != "All") 
     { 
      string value = //Need to get the value of the changed drop down. 

      foreach(GridViewRow row in allRmaGv.Rows) 
      { 
       DropDownList dcDropDown = (DropDownList)row.FindControl("dcDdl"); 
       dcDropDown.SelectedValue = value; 

      } 
     } 
    } 

Мне нужно сделать это, чтобы фильтр, подобный фильтру, в виде сетки.

ответ

0

Вам нужно отфильтровать тип строки, когда цикл по строкам в GridView, так что вы не пытаетесь искать управления в строках заголовка и/или нижнего колонтитула, поэтому постарайтесь это внутри foreeach цикла:

foreach(GridViewRow row in allRmaGv.Rows) 
{ 
    // Try to find the `dcDdl` in data rows only, because they do not exist in header or footer rows 
    if (row.RowType == DataControlRowType.DataRow) 
    { 
     DropDownList dcDropDown = (DropDownList)row.FindControl("dcDdl"); 
     dcDropDown.SelectedValue = value; 
    } 
} 

UPDATE:

Чтобы получить значение стоимости выбранного DropDown, сделайте это:

protected void dcDdl_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    if (recPartDdl.SelectedItem.Text != "All") 
    { 
     string value = (sender as DropDownList).SelectedValue.ToString(); 

     foreach(...) 
     { 
      ... 
     } 
    } 
} 
+0

Спасибо, Это не вопрос. Вопрос в том, как назначить значение моей переменной? это должно быть значение выбранного элемента. – Aaron

+0

Думаю, я понял, что завтра буду работать на работе и посмотреть, работает ли это. Я планирую использовать аргумент команды в раскрывающемся элементе управления, который передает индекс строки в код позади. – Aaron

+0

О, извините, не видел эту часть, но единственная проверка строк данных по-прежнему актуальна. См. UPDATE в ответ. –

0

Попробуйте это:

protected void dcDdl_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     if (recPartDdl.SelectedItem.Text != "All") 
     { 
      DropDownList ddl = (DropDownList)sender; 

      //First check type of ddl.SelectedValue and then process 
      string value = ddl.SelectedValue; 

      foreach(GridViewRow row in allRmaGv.Rows) 
      { 
       DropDownList dcDropDown = (DropDownList)row.FindControl("dcDdl"); 
       dcDropDown.SelectedValue = value; 
      } 
     } 
    } 
Смежные вопросы