0

ASP.NETのJavaScriptに問題があります。
javascriptを使用してaddおよびremoveコマンドを使用してlistBoxを変更します。
次に、コードビハインドのリストのデータを使用する必要があります。このデータをサーバーに渡すにはどうすればよいですか?jsonを使用できますか?

これがコードです。削除のため、hiddenFieldを使用できません。

<asp:listbox ID="SubCat" runat="server" ></asp:listbox>
<input type=button onClick="addOption(SubCat)"; value='Add'> 
<input type=button onClick="removeOptions(SubCat)"; value='Remove Selected'>
<input type=button onClick="removeAllOptions(SubCat)"; value='Remove All'>


<script type="text/javascript">


 function removeAllOptions(selectbox) {
    var i;
    for (i = selectbox.options.length - 1; i >= 0; i--) {
        selectbox.remove(i);
    }
 } 

 function removeOptions(selectbox) {
    var i;
    for (i = selectbox.options.length - 1; i >= 0; i--) {
        if (selectbox.options[i].selected)
           selectbox.remove(i);
    }
 }

 function addOption(selectbox) {
    var txtBox1 = document.getElementById('txForn')
    var optn = document.createElement("OPTION");
    var t = txtBox1.value;
    optn.text = t;
    optn.value = t;
    selectbox.options.add(optn);
 }

</ script>
4

3 に答える 3

1

非表示を使用できないのはなぜですか?リストボックスに追加または削除されたアイテムのレコードの ID を簡単に保存し、サーバーを更新できます。他のオプションは Web サービスであるか、代わりにデータをハンドラーにストリーミングします。

どちらのオプションでも、クライアント側の変更は永続化されないため、ポストバックのたびに、更新されたデータで ListBox コントロールを再読み込みする必要があります。

于 2013-01-16T18:42:57.340 に答える
1

Web サービスを作成し、DeleteSelectedOptions などのメソッドを追加して、removeOptions 関数を次のように変更するだけです。

function removeOptions(selectbox) {
   $.ajax({
       type: 'POST',
       url: 'yourservice.asmx/DeleteSelectedOptions',
       data: "{ids: '" + yourIds + "'}", // yourIds like : "1,6,9,34" 
       contentType: "application/json; charset=utf-8",
       dataType: 'json',
       success: function (result) {
          //if success, remove option on page
          var i;
          for (i = selectbox.options.length - 1; i >= 0; i--) {
            if (selectbox.options[i].selected)
               selectbox.remove(i);
          }
       },
       failure: function(errMsg) {
        alert(errMsg);
       }
    });  
  }

サンプル WebService Remove.asmx

 [WebMethod]
 public string DeleteSelectedOptions(string ids)
 {
     string[] idsArray = ids.Split(',')
     // your delete codes 
     return result;
 }
于 2013-01-16T20:44:24.933 に答える
0

サーバーに対して AJAX 要求を行う必要があることをマークします。以下の私の例を参照してください。

フォームからサーバー メソッドにフィールドを送信できる POST を利用します。また、たとえば、メソッドが値を返し、それをページに表示する必要がある場合、POST は成功関数を提供するため、この成功関数でそれを処理できます。

サーバー側の分離コード ファイルに次のメソッドがあるとします。

 public static bool AddNewItem(string name, string surname, int age)
    {


      return true;      
    }

buttons:
{
    "Add": function () {
        var name = $("#<%= txtName.ClientID  %>").val();
        var surname = $("#<%= txtSurname.ClientID %>").val();
        var age = $("#<%= txtAge.ClientID %>").val();

        $.ajax({
            type: 'POST',
            url: 'MyWebPage.aspx/AddNewItem',
            data: '{"name":"' + name + '", "surname":"' + surname + '", "age":' + age + '}',
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (msg) {
                if (msg.d) {
                    alert("Successfully added new item");                                    
                }
            },
            error: function () {
                alert("Error! Try again...");
            }
        });
    },
    "Cancel": function () {
        $(this).dialog("close");
    }
}
于 2013-01-16T18:41:33.647 に答える