0

データベース内のさまざまなグループに基づいていくつかのグラフを表示するメトリック画面に取り組んでいます。その一部は、ユーザーがクリックして表示するまで、選択したグラフを非表示にする機能を使用しています。

問題は次のとおりです。ドロップダウンリストでDatabindを使用しているため、新しいグループを選択するたびにページが更新され、すべてがデフォルトの状態に戻ります。

私の質問はこれです:ドロップダウンリストから新しいオプションを選択するたびにページが更新されないようにする方法はありますか?もしそうなら、どのように?そうでない場合は、ドロップダウンリストを作成して値を添付するためのより良い方法はありますか?に設定AppendDataBoundItemsするとfalse、常に選択した値がリストの最初の項目として取得されます。

ドロップダウンリストのコードは次のとおりです。

    <asp:DropDownList ID="MinistryDropdown" OnSelectedIndexChanged="Selection_Change" AutoPostback="true" AppendDataBoundItems="true" runat="server"/>

次に、その背後にあるC#コードは次のとおりです。

public void Page_Load(object sender, EventArgs e){
    MinistryDropdown.DataSource = CreateDataSource();
    MinistryDropdown.DataTextField = "Description";
    MinistryDropdown.DataValueField = "Description";
    MinistryDropdown.DataBind();

...other code here...
}
ICollection CreateDataSource(){
    DataTable Ministries = new DataTable();

    Ministries = oDatabase.GetData(@"SELECT DISTINCT B.Description
        FROM tblInvolvement AS A LEFT JOIN tblMinistries AS B
        ON A.Activity = B.MinistryID");

    DataView dv = new DataView(Ministries);
    return dv;
}
4

2 に答える 2

1

ASP.NETUpdatePanelを使用してみてください。DropDownListをラップするだけで、機能するはずです。これは私がテストしなかった簡単な例です。

<asp:ScriptManager ID="ScriptManager" runat="server"></asp:ScriptManager>
<asp:UpdatePanel runat="server" UpdateMode="Conditional">
    <ContentTemplate>
       <asp:DropDownList ID="MinistryDropdown" OnSelectedIndexChanged="Selection_Change" AutoPostback="true" AppendDataBoundItems="true" runat="server"/>
    </ContentTemplate>
</asp:UpdatePanel>

最後に、このソリューションの限界がすぐにわかります。後で、代わりにJavascriptを使用することをお勧めします。

于 2012-11-16T20:43:10.243 に答える
0

問題は、Page_Loadでデータを再バインドしているが!IsPostBack、コードが次のようになっている必要があるかどうかを確認していないことだと思います。

public void Page_Load(object sender, EventArgs e){
   if(!IsPostBack)
    {
       MinistryDropdown.DataSource = CreateDataSource();
       MinistryDropdown.DataTextField = "Description";
       MinistryDropdown.DataValueField = "Description";
       MinistryDropdown.DataBind();

      ...other code here...
   }
}
于 2012-11-16T20:55:34.670 に答える