ここに初めて投稿します。
グリッドビューをドロップダウンリストにバインドし、選択したアイテムの内容を ddl に表示することに行き詰まった、単純な Web アプリケーションに特定の問題があります。
gridview を ddl にバインドすると、ddl のすべての項目に含まれる情報が表示されます。しかし、私は一生、選択したオブジェクトの情報のみをグリッドビューに表示する方法を理解できません。
また、ddl の onSelectedItemChanged からデータバインドを再起動することもできませんでした。
protected void ddlPersons_SelectedItemChanged(object sender, EventArgs e)
{
Label1.Text = "message";
this.GridView1.DataSource = Persons;
this.GridView1.DataBind();
}
( Persons は、必要な情報が含まれていることを確認したオブジェクトのリストです。ラベルは、メソッドが起動するかどうかを確認するためのものです。これも実行されますが、データバインドは実行されません。)
私はstackoverflowからさまざまな答えを試しましたが、私のプロジェクトではうまくいかないようで、何をすべきか完全に迷っています。
ここで私のページの読み込みを更新しました。メソッド loadList() で、Persons リストを埋めます。その内容は変わりません。
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
loadList();
}
}
ddlPersons.SelectedItem を使用してどのコンテンツをフィルタリングするかについては、それがどのように行われるかわかりません。つまり、選択したオブジェクトにアクセスするためにさまざまな方法を使用しようとしましたが、まだ失敗しています。
更新 2
グリッドビューとドロップダウンリストのマークアップ
<asp:GridView ID="GridView1" runat="server">
<Columns>
<asp:TemplateField HeaderText ="Nr">
<ItemTemplate>
<%# DataBinder.Eval(Container, "DataItem.getSetFirstName") %>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText ="Namn">
<ItemTemplate>
<%# DataBinder.Eval(Container, "DataItem.getSetFirstName") %>
<%# DataBinder.Eval(Container, "DataItem.getSetLastName") %>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText ="Ålder">
<ItemTemplate>
<%# DataBinder.Eval(Container, "DataItem.getSetAge") %>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:DropDownList ID="ddlPersons" runat="server" OnSelectedItemChanged="ddlPersons_SelectedItemChanged" AutoPostBack="True" OnSelectedIndexChanged="ddlPersons_SelectedItemChanged">
</asp:DropDownList>