自訂個人化 EditPeople控制項

來源:互聯網
上載者:User

 

       最近折騰SharePoint 2010 比較多,有些客戶想定製EditPeople控制項,有些領導感覺那個搜尋不太“好”,希望能有一個樹形選擇就完美了

哎,客戶有要求,咱們哪裡能不辦?

 

圖1

圖2

圖3

 

代碼 :

<script type="text/javascript" language="javascript">
    /*
    *   Validate User name
    */
    function fetchUserName() {
        var buttonClientID = '<%=imgButtonCheckNames.ClientID%>';
        var htmlButton = document.getElementById(buttonClientID);

        if (htmlButton != null) {   // if the html button found ..
            htmlButton.click();
        }
    }
    function Callback_User(xml) {
        if (xml == null)
            return;
        var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
        xmlDoc.async = "false";
        xmlDoc.loadXML(xml);
        var txtUserName = document.getElementById('<%=txtUserName.ClientID  %>');
        var node = xmlDoc.getElementsByTagName('Entity');
        var userName = '';
        if (node != null) {
            if (node[0].attributes.getNamedItem('Key') != null) {
                var userName = node[0].attributes.getNamedItem('Key').value;
                txtUserName.value = userName;
            }
        }
    }
    function _Dialog_UserCheck(defaultSearch) {
      
        var txtUserName = document.getElementById('<%=txtUserName.ClientID %>');
       // ctl00$m$g_ab19aaaf_a004_4410_97b2_7974ffada0af$ctl00$txtUserName   
        if (txtUserName.disabled)
            return;
        if (defaultSearch == undefined)
            defaultSearch = '';
        var txtSiteName = document.getElementById('<%=hidSiteName.ClientID %>');
        var sDialogUrl = '\u002f' + txtSiteName.value + '\u002f_layouts\u002fPicker.aspx?MultiSelect=True\u0026CustomProperty=User\u00253B\u00253B15\u00253B\u00253B\u00253BFalse\u0026DialogTitle=\u0025E9\u002580\u002589\u0025E6\u00258B\u0025A9\u0025E4\u0025BA\u0025BA\u0025E5\u002591\u002598\u0026DialogImage=\u00252F\u00255Flayouts\u00252Fimages\u00252Fppeople\u00252Egif\u0026PickerDialogType=Microsoft\u00252ESharePoint\u00252EWebControls\u00252EPeoplePickerDialog\u00252C\u002520Microsoft\u00252ESharePoint\u00252C\u002520Version\u00253D14\u00252E0\u00252E0\u00252E0\u00252C\u002520Culture\u00253Dneutral\u00252C\u002520PublicKeyToken\u00253D71e9bce111e9429c\u0026ForceClaims=False\u0026DisableClaims=False\u0026EnabledClaimProviders=\u0026EntitySeparator=\u00253B\u0025EF\u0025BC\u00259B\u0025EF\u0025B9\u002594\u0025EF\u0025B8\u002594\u0025E2\u00258D\u0025AE\u0025E2\u002581\u00258F\u0025E1\u00258D\u0025A4\u0025D8\u00259B';
        if (txtSiteName.value == '') {
            sDialogUrl = '\u002f_layouts\u002fPicker.aspx?MultiSelect=True\u0026CustomProperty=User\u00253B\u00253B15\u00253B\u00253B\u00253BFalse\u0026DialogTitle=\u0025E9\u002580\u002589\u0025E6\u00258B\u0025A9\u0025E4\u0025BA\u0025BA\u0025E5\u002591\u002598\u0026DialogImage=\u00252F\u00255Flayouts\u00252Fimages\u00252Fppeople\u00252Egif\u0026PickerDialogType=Microsoft\u00252ESharePoint\u00252EWebControls\u00252EPeoplePickerDialog\u00252C\u002520Microsoft\u00252ESharePoint\u00252C\u002520Version\u00253D14\u00252E0\u00252E0\u00252E0\u00252C\u002520Culture\u00253Dneutral\u00252C\u002520PublicKeyToken\u00253D71e9bce111e9429c\u0026ForceClaims=False\u0026DisableClaims=False\u0026EnabledClaimProviders=\u0026EntitySeparator=\u00253B\u0025EF\u0025BC\u00259B\u0025EF\u0025B9\u002594\u0025EF\u0025B8\u002594\u0025E2\u00258D\u0025AE\u0025E2\u002581\u00258F\u0025E1\u00258D\u0025A4\u0025D8\u00259B';
        }
          sDialogUrl = sDialogUrl + '&DefaultSearch=' + escapeProperly(defaultSearch);
        //sDialogUrl = "/_layouts/CustomPeopleEditor/CheckUsesr.aspx?IsDlg=1";
        var sFeatures = 'resizable=yes,status=no,scrollbars=no,menubar=no,directories=no,location=no,width=470,height=530px';

        var rv = commonShowModalDialog(sDialogUrl, sFeatures, Callback_User);
    }
</script>

如果我們把 sDialogUrl = sDialogUrl + '&DefaultSearch=' + escapeProperly(defaultSearch);

換成  sDialogUrl = "/_layouts/CustomPeopleEditor/CheckUsesr.aspx?IsDlg=1";

就會調出我們自己寫的treeview控制項

 

 首先動態調用_Dialog_UserCheck 這個函數,然後根據Callback_User回寫value

 

當然要完美實現這一應用,可能還需要額外的代碼,作為Demo代碼可能已經夠了,核心函數都在這裡·

 

 

 

 

 

       

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.