4

私は2つのASPドロップダウンリストを持っています..2つのドロップダウンリストで選択された値に基づいて、Jquery Sortable接続リストを実装した2つの順序付けられていないリストを動的に生成します..最初のリストにはいくつかのデフォルト値が含まれています..ドラッグアンドドロップする必要があります2番目のリストに必要な値...重複するエントリを追加するのを防ぐ必要があります..

以下にコードを貼り付けています...親切に確認して解決策を提供してください:

これは、2 つのドロップダウン リストの aspx コードです。

    <form id="form1" runat="server">

       Application <asp:DropDownList ID="ApplicationList" runat="server" AutoPostBack="true"  OnSelectedIndexChanged="FetchRoleFromApplication" >
          </asp:DropDownList>

      Role <asp:DropDownList ID="RoleName" runat="server" onchange="javascript:ShowSortable();"  >
       </asp:DropDownList>

    <ul id="sortable1" class="connectedSortable" runat="server" style="display:none">

   </ul>


   <ul id="sortable2" class="connectedSortable" style="display:none" runat="server" >

    </ul>
    </form>

最初の ul リストは独立しているため、その値は分離コード (pageload) で次のようにロードされます。

 HtmlGenericControl li;
        JavaScriptSerializer objJSSerializer = new JavaScriptSerializer();
        foreach (FetchUserGroup_Result objectItem in Allusergroup)
        {
            li = new HtmlGenericControl("li");
            li.ID = objectItem.group_id.ToString();
            li.Attributes.Add("class", "ui-state-default");
            li.InnerText = objectItem.group_name;

            sortable1.Controls.Add(li);
        }

2 番目の ul リストの値は、次のような ajax 呼び出しによって読み込まれます...

function ShowSortable() {

    $('#sortable1').show();


    var postJSONData = JSON.stringify({ ApplicationId: $('#applnhdnname').val(), RoleName: $('#RoleName').val() });
    $.ajax({
        type: 'POST',
        data: postJSONData,
        url: 'UserManagementService.svc/GetUserGroupsForApplicationRole',

        dataType: 'json',
        async: false,
        contentType: 'application/json; charset=utf-8',

        success: function success(response) {

            $("#sortable2").append(response.d);
            $('#sortable2').show();

        },
        error: SessionExpiryHandler
    });
}   

対応する wcf サービスは次のとおりです。

[OperationContract]
        [WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Json)]
        public string GetUserGroupsForApplicationRole(string ApplicationId, string RoleName)
        {

            User user = new User();
            JavaScriptSerializer objJSSerializer = new JavaScriptSerializer();
            List<GetUserGroupForApplicationRole_Result> usergroup;
            usergroup = user.GetUserGroupForApplicationRole(ApplicationId, RoleName);
            string sample = string.Empty;

            foreach (GetUserGroupForApplicationRole_Result objectItem in usergroup)
            {

                sample += "<li id= "+objectItem.group_id+ " class='ui-state-highlight'>";
                sample += objectItem.group_name;
                sample+="</li>";

            }


            return sample;
        }

これで値の重複を避ける方法...助けてください..

前もって感謝します..

4

1 に答える 1

0

こんにちは、JavaScriptを次のように変更します。

 <script>
    function ShowSortable() {

        $('#sortable1').show();


        var postJSONData = JSON.stringify({ ApplicationId: $('#applnhdnname').val(), RoleName: $('#RoleName').val() });
        $.ajax({
            type: 'POST',
            data: postJSONData,
            url: 'UserManagementService.svc/GetUserGroupsForApplicationRole',

            dataType: 'json',
            async: false,
            contentType: 'application/json; charset=utf-8',

            success: function success(response) {
                for(var i=0; i<response.d.length;i++)
                {

                    var myOption = $("<option value= " + response.d[i] + "> " + response.d[i] + " </option>");
                    if ($("#sortable2").length == 0) {
                        $("#sortable2").append(myOption);

                    }
                    $("#sortable2> option").each(function() {

                        if (response.d[i] != this.value) {
                            $("#sortable2").append(myOption);

                        }


                    });
                }

                $('#sortable2').show();
            },
            error: SessionExpiryHandler
        });
    }

</script>
于 2013-03-15T06:01:54.667 に答える