2

ここに初めて投稿します。

グリッドビューをドロップダウンリストにバインドし、選択したアイテムの内容を 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>
4

2 に答える 2

1
 protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
          loadList();
          BindGrid();
        }
    }

Public void BindGrid()
   { 
   // Code to Bind Gridview.
   }

あなたはあなたPersonを静的に保ち、その値は決して変わらず、イベントのようPersonにグリッドビューデータソースを提供したのでddlPersons_SelectedItemChanged、グリッドビューのコンテンツは変更されません。

2 . 値を除外するには イベントで 1 つのことを行うことがRowDataBoundでき、他のすべての行を非表示にして、dropdown.SelectedValue に関連する行を受け入れることができます。

または、別のメソッドを作成して、 gridview にデータを入力します。

 protected void ddlPersons_SelectedItemChanged(object sender, EventArgs e)
    {
        //Label1.Text = "message";
        //this.GridView1.DataSource = Persons;
       // this.GridView1.DataBind();
       int ddlVal = Convert.toint32(ddlPersons.SelectedValue);
       BindGridUsingDdl(ddlVal); 
    }

 Public void BindGridUsingDdl(int ddlVal)
   {
      //Your code to populate gridview 
       // Gridview.Datasource = filter your list according 
      // to selected value of dropdown.
   }
于 2013-11-08T16:08:55.743 に答える