1

クライアント側から、ある ASP.NET ListBox コントロールから別の ListBox コントロールにアイテムを移動しています。クライアント側では機能しますが、サーバー側で目的の ListBox のアイテムを数えようとすると、常に何もありません。以下は、ListBox コントロールから項目を追加/削除するために使用される jQuery コードです。

<script type="text/javascript">
    $(document).ready(function(addToList) {
    // to move selected item from lbSource to lbDestination
    $("#add").click(function() {
    $("#lbSource  option:selected").appendTo("#lbDestination").attr("selected", false);
    });

    // to remove selected item from lbDestination to lbSource
    $("#remove").click(function() {
    $("#lbDestinaion option:selected").appendTo("#lbSource").attr("selected", false);
    });
});
</script>

サーバー側から ListBox にアイテムを追加/削除できることを知っています。しかし、私はそれをクライアント側からやりたいと思っています。

項目がクライアント側から既に追加されているにもかかわらず、コード ビハインドから項目をカウントするときに宛先 ListBox に何もないのはなぜですか。

4

3 に答える 3

0

クライアント側に表示されていても、サーバーに送信されず、サーバーで値が更新されません。 update db sql を実行するなど、リストを更新するアクションを実行していますか??

out page submit を使用せずにこれを行う場合は、Ajax を使用します。

于 2010-10-11T17:53:25.137 に答える
0

サーバーがコントロールのビューステートの変更を追跡できるようにするには、更新パネルを使用する必要があります。

サーバ側:

protected void btnMove_OnClick(object sender, EventArgs Args)
{
    ListItem SourceItem = bSource.SelectedItem;

    lbDestination.Items.Add(SourceItem );
    lbSource.Items.Remove(SourceItem);
}

マークアップ:

<asp:UpdatePanel ChildrenAsTriggers="true" runat="Server">
    <ContentTemplate>

    <asp:ListBox ID="lbSource" runat="server"/>
    <asp:Button ID="btnMove" OnClick="btnMove_OnClick" runat="server"/>
    <asp:ListBox ID="lbDestination" runat="server"/>

    </ContentTemplate>
</asp:UpdatePanel>
于 2011-02-02T02:44:57.380 に答える
0

コントロールで行われた Javascript の変更は、サーバー側には表示されません。asp.netのライフサークルに関係していると思います。ただし、隠しフィールドに表示されます。したがって、追加の非表示フィールドに情報を追加する場合は、サーバー側で追跡できます。たとえば、非表示フィールドにオプションの ID または名前を保存できます。

于 2010-10-10T19:22:43.940 に答える