<asp:GridView ID="GridView1" CssClass="GridViewStyle" runat="server" OnRowCreated="GridView1_OnRowCreated"> <Columns> <asp:BoundField DataField="CreateDate" HeaderText="CreateDate" ReadOnly="True" SortExpression="CreateDate" /> <asp:TemplateField> <HeaderTemplate> OfficeDisplayName<br /> <asp:DropDownList ID="dpdDisplayName2" AppendDataBoundItems="True" onselectedindexchanged="dpdDisplayName2_SelectedIndexChanged" runat="server" AutoPostBack="true"> </asp:ListItem Text="Alle" Value="*"> </asp:DropDownList> </HeaderTemplate> <ItemTemplate> </asp:Label ID="lblOfficeDisplayName" runat="server" Text='<%# bind("OfficeDisplayName")%>'> </ItemTemplate> </asp:TemplateField> </Columns> <FooterStyle CssClass="GridViewFooterStyle" /> <RowStyle CssClass="GridViewRowStyle" /> <SelectedRowStyle CssClass="GridViewSelectedRowStyle" /> <PagerStyle CssClass="GridViewPagerStyle" /> <AlternatingRowStyle CssClass="GridViewAlternatingRowStyle" /> <HeaderStyle CssClass="GridViewHeaderStyle" /> </asp:GridView>
protected void GridView1_OnRowCreated(object sender, GridViewRowEventArgs e) { // === Filtern befüllen if (e.Row.RowType == DataControlRowType.Header) { DropDownList typeFilter = (DropDownList)e.Row.FindControl("dpdDisplayName2"); typeFilter.DataTextField = "OfficeDisplayName"; typeFilter.DataValueField = "OfficeDisplayName"; typeFilter.DataSource = AdminDB.getAllDisplayNames(db); typeFilter.DataBind(); } } protected void dpdDisplayName2_SelectedIndexChanged(object sender, EventArgs e) { var filter = dpdDisplayName2.SelectedItem.Value; <--- Das hier funktioniert nicht. Das Header-DropDown Controll ist in diesem Context nicht bekannt bindGrid(filter); }
Hi,
mal ins Blaue geschossen - sollte per:
GridViewRow header=GridView1.HeaderRow;DropDownList selection = row.FindControl("dpdDisplayName2") as DropDownList;
eigentlich funzen.
HTHThomas