使用C#在智能表中同时添加更新

时间:2017-07-25 05:44:18

标签: c# smartsheet-api

        SmartsheetClient ss = new SmartsheetBuilder().SetAccessToken(accessToken).Build(); 
        Sheet sheet = ss.SheetResources.GetSheet(sheetId, null, null, null, null, null, null, null);
        //Add
        Cell[] cellA = new Cell[] { new Cell.AddCellBuilder(sheet.Columns[0].Id, "test task1").Build() };
        Row rowA = new Row.AddRowBuilder(null,true, null, null, null).SetCells(cellA).Build();
        ss.SheetResources.RowResources.AddRows(sheetId, new Row[] { rowA });
        Cell[] cellB = new Cell[] { new Cell.AddCellBuilder(sheet.Columns[0].Id, "test task2").Build() };
        Row rowB = new Row.AddRowBuilder(null, true, null, null, null).SetCells(cellB).Build();
        ss.SheetResources.RowResources.AddRows(sheetId, new Row[] { rowB });
        Cell[] cellC = new Cell[] { new Cell.AddCellBuilder(sheet.Columns[0].Id, "test task3").Build() };
        Row rowC = new Row.AddRowBuilder(null, true, null, null, null).SetCells(cellC).Build();
        ss.SheetResources.RowResources.AddRows(sheetId, new Row[] { rowC });

        //Update
        Cell[] cell = new Cell[] { new Cell.UpdateCellBuilder(sheet.Columns[0].Id, "test task update").Build() };
            Row row = new Row.UpdateRowBuilder(sheet.Rows[2].Id).SetCells(cell).Build();
            ss.SheetResources.RowResources.UpdateRows(sheetId, new Row[] { row });

但我得到错误 - 未处理的类型' System.ArgumentOutOfRangeException'发生在mscorlib.dll

其他信息:指数超出范围。必须是非负数且小于集合的大小。

在以下行 -

           Row row = new Row.UpdateRowBuilder(sheet.Rows[2].Id).SetCells(cell).Build();
            ss.SheetResources.RowResources.UpdateRows(sheetId, new Row[] { row });

因为" sheet.Rows.count"仍然是0。

因此我添加了以下行 -

           sheet = ss.SheetResources.GetSheet(sheetId, null, null, null, null, null, null, null);

以上行 -

           Cell[] cell = new Cell[] { new Cell.UpdateCellBuilder(sheet.Columns[0].Id, "test task update").Build() };

并且错误消失了,我的工作表也会更新。

我想问一下这是否是正确的方法,一个人必须调用" GetSheet"再次加载更新的表格然后继续或者还有其他方法。

1 个答案:

答案 0 :(得分:0)

是的,服务器上的工作表已更改,因此您需要另一个GET才能拥有匹配的本地表示。