0

次のようなグリッドビューがあります。

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"  PageSize="10"
        DataKeyNames="id" 
        OnRowEditing="GridView1_RowEditing"
        OnRowCancelingEdit="GridView1_RowCancelingEdit"
        OnRowUpdating="GridView1_RowUpdating"
        OnPageIndexChanging="GridView1_PageIndexChanging"
        OnPageIndexChanged="GridView1_PageIndexChanged"
        AllowPaging="True">

正常に動作します。データベース結果のフィルターとして機能する、グリッドビューの上にドロップダウン ボックスを追加したいと考えています。

<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="true">
    <asp:ListItem Value="0">Show all</asp:ListItem>
    <asp:ListItem Value="1">In queue</asp:ListItem>
    <asp:ListItem Value="2">Being worked on</asp:ListItem>
    <asp:ListItem Value="3">Complete</asp:ListItem>
    <asp:ListItem Value="4">Declined</asp:ListItem>
</asp:DropDownList>

ドロップダウンをグリッドビューと対話させて結果を更新するにはどうすればよいですか? グリッドビューではページングが有効になっているため、ページがクリックされたときにドロップダウン オプションを記憶する必要があり、ページ番号とドロップダウンの選択に基づいてデータベースの結果も記憶する必要があることに注意してください。

アップデート:

BindData が Page_Load に入る場所に、次のようにグリッドビューを設定します。

private void BindData()
{

    SqlConnection con = new SqlConnection(ConfigurationManager.AppSettings["connString"]);
    SqlDataAdapter da = new SqlDataAdapter(@"sql query here", con);

    DataTable dt = new DataTable();
    da.Fill(dt);

    GridView1.DataSource = dt;

    GridView1.DataBind();

}

Page_Load は次のようになります。

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        BindData();
    }
}
4

2 に答える 2

1

BindData()メソッドでは、フィルタ値が選択されている場合はそのフィルタ値を渡し、DropDownList1それに応じて SQL を修正する必要があります。要求されたページ番号を SQL ステートメントに渡す必要がある場合もあります。これにより、結果をフィルター処理できるようになりますSELECT(述べていないページングの方法によって異なります)。

次に、callのAutoPostBackメソッドで。DropDownList1BindData()

このようにして、ドロップダウン リストの値が変更されるたびにBindData()メソッドが呼び出され、関連するフィルターとページ番号が渡されて、関連する結果が取得されます。

于 2013-08-13T10:31:35.437 に答える
0

DropDownList1 の indexchnage イベントで次のコードを記述できます。

DataView dataView = dt.DefaultView;
dataView.RowFilter = "NewsDate2 = '" + DropDownList1.SelectedValue + "'";

GridView1.DataSource = dataView;
GridView1.DataBind();
于 2013-08-13T10:30:33.677 に答える