今天下午研究了一下ECMAScript,暂时发现有一个好处是,如果生产生境的过程中,没有开发环境,可以用到这个技术,因为这个有Javascript Object Client Model,暂时把一些暂时用过的实例及方法做一下记录!

下面的网址是Javascript Classi Library的地址,你可以从以下网址了解其整个架构

http://msdn.microsoft.com/en-us/library/ee538253.aspx

 

暂时用到是SP.js, 下面的引用js代码有可能会在开发中用到,一般情况下. Application Page 都不会用到。

<sharepoint:ScriptLink Name="SP.js" runat="server" OnDemand="true" Localizable="False"></sharepoint:ScriptLink>


一般来说首先会得到一个ClientContext

        var clientContext = new SP.ClientContext.get_current();
或者
      var clientContext = new SP.ClientContext();

得到web

var web = clientContext.get_web(); //得到当前Web

列表集合listCollection

this.listCollection = web.get_lists();

列表遍历的一个实例

    function onQuerySucceeded() {
        var listInfo = 'Lists on the current site:' + '\n\n';
        var listEnumerator = this.listCollection.getEnumerator();
        while (listEnumerator.moveNext()) {
            var list = listEnumerator.get_current();
            listInfo += list.get_title() + '\n';
        }
        alert(listInfo);
    }

  

列list

 var targetlist = clientContext.get_web().get_lists().getByTitle('testEcaml');
targetlist.set_title('New Announcements'); //设置Title

 

listItem列表项

This.item = list.getItemById(itemId);

var value = SP.ListCollection.get_item(index);

fieldName都是Field的内部名称

var value = olistItem.get_item(fieldName);
olistItem.set_item(fieldName, value);

var idValue= olistItem.get_id(); //取Id

一些常见方法:

olistItem.update();

olistItem.refleshload();

olistItem.deleteObject();

olistItem.recycle();

 

query 例子

<script type="text/javascript">
    function GetItemTest(queryId) {
        clientContext = SP.ClientContext.get_current();
        var list = clientContext.get_web().get_lists().getByTitle('#Your List Name#');
        var camlQuery = new SP.CamlQuery();
        var strCaml = "<View><ViewFields><FieldRef Name='LinkTitle'/><FieldRef Name='Field1' /><FieldRef Name='Field2'/></ViewFields><Query><Where><Eq><FieldRef Name='LinkTitle' /><Value Type='Text'>" + queryId + "</Value></Eq></Where></Query></View>";
        camlQuery.set_viewXml(strCaml);
        this.collListItem = list.getItems(camlQuery);
        clientContext.load(collListItem);
        clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));
    }
    function onQuerySucceeded(sender, args) {
        var listItemEnumerator = collListItem.getEnumerator();

        while (listItemEnumerator.moveNext()) {
            var oListItem = listItemEnumerator.get_current();
            var item = oListItem.get_item('Field1');
        }
    }

    function onQueryFailed(sender, args) {
        alert('Request failed' + args.get_message() + '\n' + arg.get_stackTrace());
    }


    var collListItem = null;
    var clientContext = null;
</script>

 

 具体详细地址:http://msdn.microsoft.com/en-us/library/ee552478.aspx

列表级别

创建列表,并添加了一条记录

View Code
 function createList(listName) {
        //Create client context. 
        var clientContext = new SP.ClientContext();
        var oWebsite = clientContext.get_web();

        //Let's create list creation information object
        var listCreationInfo = new SP.ListCreationInformation();
        listCreationInfo.set_title(listName);
        listCreationInfo.set_templateType(SP.ListTemplateType.announcements);
        listCreationInfo.set_quickLaunchOption(SP.QuickLaunchOptions.on);

        this.oList = oWebsite.get_lists().add(listCreationInfo);

        //Let's create also new item to the list to be created 
        var itemCreateInfo = new SP.ListItemCreationInformation();
        this.oListItem = oList.addItem(itemCreateInfo);
        oListItem.set_item('Title', 'Example item for ' + listName);
        oListItem.set_item('Body', 'Hello seminar audience. From list ' + listName);
        oListItem.update();

        clientContext.load(oListItem);
        clientContext.load(oList);

        //Execute the actual script 
        clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));
    }

SP.ListTemplateType Enumeration 可以参考以下网址

http://msdn.microsoft.com/zh-cn/library/ee549420.aspx

列表项级别

添加新的记录

View Code
<script type="text/javascript">

 function runCode() {
 
     var clientContext = new SP.ClientContext();
     var targetlist = clientContext.get_web().get_lists().getByTitle('testEcaml');
     var itemCreateInfo = new SP.ListItemCreationInformation();
     this.newItem = targetlist.addItem(itemCreateInfo);
     newItem.set_item('Title', 'test');
     newItem.update();
     clientContext.load(newItem);
     clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded),
     Function.createDelegate(this, this.onQueryFailed));

 }

    function onQuerySucceeded() {

        alert('Announcement created!\n\nId: ' + newItem.get_id() + '\nTitle: ' + newItem.get_item('Title'));
    }

    function onQueryFailed(sender, args) {

        alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
    }

</script>

    <input id="Button1" type="button" value="Run Code" onclick="runCode()" />


其他的待续.......

 

 

 

 

posted on 2012-04-28 16:35  gzh4455  阅读(375)  评论(0编辑  收藏  举报