0

EditEmployee.aspx という名前の ASP.NET ページがあります。読み込まれると (クエリ文字列で EmployeeId を渡す)、テキスト ボックスやその他のコントロールにデータが入力されます。

従業員は、米国内の 1 つだけの会社のオフィスに関連付けられています。

州市役所

表示されています。

ユーザーが都市をクリックして変更した場合、ポストバックを実行して、その都市のオフィスの新しいリストを作成する必要があります。

Page_Load 中に Employee オブジェクトをセッション変数に保存できますが、保存するときにそのオブジェクトをセッションから戻すと、データ コンテキストが失われたように見えます。

どうすればこれを解決できますか?

ありがとう。

4

2 に答える 2

1

従業員オブジェクトまたはコンテンツオブジェクトをセッション変数に保存するのではなく、クエリ文字列のIDを使用してデータをクエリする必要があります。データコンテキストオブジェクトは、を使用した作業単位アプローチの場合のように作成および破棄されるように作成されたデータプロバイダーです。

于 2013-02-07T03:55:26.263 に答える
0

ドロップダウン リストを更新パネルに配置し、City ドロップダウンで新しい選択が行われたときに Office ドロップダウン リストを再バインドします。

簡単に言うと...

フロントエンド:ScriptManagerページに を追加し、ドロップダウン リストを で囲みますUpdatePanel

<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
        <asp:DropDownList ID="ddlCity" 
                          runat="server" 
                          OnSelectedIndexChanged="ddlCityChanged">
        </asp:DropDownList>
        <asp:DropDownList ID="ddlOffices"
                          runat="server">
        </asp:DropDownList>
    </ContentTemplate>
</asp:UpdatePanel>

コード ビハインド。通常のようにイベント ハンドラを接続するだけです。

protected void ddlCityChanged(object sender, EventArgs e) 
{
    var city = ddlCity.SelectedValue;
    // get the offices for that city
    ddlOffices.DataSource = [offices];
    ddlOffices.DataBind();
}

UpdatePanel は、完全なポストバックではなく部分的なポストバックをトリガーし、Ajax を使用して UpdatePanel 内のページの一部のみを更新します。ページの残りの部分は影響を受けません。

于 2013-02-07T03:58:37.867 に答える