2017-02-17 7 views
0

У меня есть 2 DropDownLists на моей форме и 1 GridView. Я хочу, чтобы GridView отображал данные в соответствии с выбором из списка DropDownLists.Раскрывающиеся списки OnSelected Index изменено событие и Gridview Ответ на два выпадающих списка

Например, One DropDownList содержит GroupNames, а другой содержит Status. Оба DropDownLists могут отправлять сообщения назад. Поэтому, если я выберу имя группы из 1-го DropDownList, GridView должен показать все результаты в соответствии с этим именем. Аналогично, если я выбираю статус из другого DropDownList, GridView должен показывать результаты в соответствии со статусом. Но я не могу понять, как связать GridView, чтобы ответить на 2 DropDownLists.

BTW Я связываю 1-ый список выпадающих списков и вид сетки в объекты DataSource, которые получают данные из базы данных. и я получаю ошибку, если я привязываю тот же источник данных к второму раскрывающемуся списку, как привязать второй выпадающий список к тому же gridview.

Любые предложения ??? , пожалуйста, помогите ??

+0

Вы пробовали выбранное измененное событие? – Webruster

+0

Да, я новичок в кодировании. Я не получаю, как получить данные из ddlselectindex из двух выпадающих меню. Пожалуйста, помогите – Jones

+0

напишите код, что вы пробовали, чтобы было легко, где он застрял, вот как работает SO – Webruster

ответ

0

Установите dropdownListsAutoPostBack="true", населяют списки в page_load, проверяя, если это не postBack, а затем ваше событие SelectedIndexChange будет срабатывать.

.aspx Код:

 <asp:DropDownList AutoPostBack="true" ID="ddlGroupName" OnSelectedIndexChanged="ddlGroupName_SelectedIndexChanged" runat="server" /> 
     <asp:DropDownList ID="ddlStatus" AutoPostBack="true" OnSelectedIndexChanged="ddlStatus_SelectedIndexChanged" runat="server" /> 
     <asp:DataGrid runat="server" ID="gv1" AutoGenerateColumns="False"> 
      <Columns> 
       <asp:BoundColumn HeaderText="Id" DataField="Id" /> 
       <asp:BoundColumn HeaderText="Group Name" DataField="GroupName" /> 
      </Columns> 
     </asp:DataGrid> 

Классы для заполнения ваших DropDownLists:

public class Groups 
    { 
     public int Id { get; set; } 
     public string GroupName { get; set; } 
    } 
    public class transMedHandler 
    { 
     public static List<Groups> GetGroupNames() 
     { 
      return new List<Groups>() 
      { 
       new Groups {Id = 1, GroupName = "cardia connections" }, 
       new Groups { Id = 2, GroupName = "citizens group" }, 
       new Groups { Id = 3, GroupName = "testgroup etc" } 
      }; 
     } 
     public static List<Groups> GetNames() 
     { 
      return new List<Groups>() 
      { 
       new Groups { Id = 1, GroupName = "active" }, 
       new Groups { Id = 2, GroupName = "assigned" }, 
       new Groups { Id = 3, GroupName = "returned" }, 
       new Groups{ Id = 4, GroupName = "deactivated" } 
      }; 
     } 
    } 

я использовал классы, так что вы можете заполнить эти списки от некоторой таблицы в вашей БД, а также. И, наконец, обратный код для обработки событий и манипуляций.

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!IsPostBack) 
     { 
      //populating ddlGroupName DropDown 
      ddlGroupName.DataSource = transMedHandler.GetGroupNames(); 
      ddlGroupName.DataTextField = "GroupName"; 
      ddlGroupName.DataValueField = "Id"; 
      ddlGroupName.DataBind(); 
      ddlGroupName.SelectedIndex = 0; 
      //populating ddlStatus DropDown 
      ddlStatus.DataSource = transMedHandler.GetNames(); 
      ddlStatus.DataTextField = "GroupName"; 
      ddlStatus.DataValueField = "Id"; 
      ddlStatus.DataBind(); 
      ddlStatus.SelectedIndex = 0; 
     } 
    } 
    protected void GetGroupNames() 
    { 
     gv1.DataSource = transMedHandler.GetGroupNames(); 
     gv1.DataBind(); 
    } 
    protected void GetNames() 
    { 
     gv1.DataSource = transMedHandler.GetNames(); 
     gv1.DataBind(); 
    } 
    protected void ddlGroupName_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     GetGroupNames(); 
    } 
    protected void ddlStatus_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     GetNames(); 
    } 

Вы можете внести изменения в gridView, DropDown классы манипуляции и т.д. в соответствии с вашими потребностями. Я написал/протестировал этот код, он отлично работает.

Надеюсь, это поможет.

+0

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

+0

Вот почему вам не нужен этот класс для получения элементов, просто получите данные из db и установите их в 'dropdownlist', а остальная часть кода останется без изменений. Это решило вашу проблему или нет? –

+0

Пожалуйста, помогите Проблема еще не решена – Jones

 Смежные вопросы

  • Нет связанных вопросов^_^