Показаны сообщения с ярлыком C#. Показать все сообщения
Показаны сообщения с ярлыком C#. Показать все сообщения

среда, 31 июля 2019 г.

Install App CSOM

Для автоматизации развертывания приложений в SharePoint, мы можем использовать Application Lifecycle Management (ALM) APIs

PnP Core предоставляет доступ к модели.
пример extension для ClientContext:

public static void AppInstall(this ClientContext clientContext, string appName)
{
var appManager = new AppManager(clientContext);
var availableApps = appManager.GetAvailable();
var app = apps.FirstOrDefault(a => a.Title == appName);
        if(app==null) return;
appManager.Install(app);
}

Так же можно использовать асинхронную установку

var installApp = await appManager.InstallAsync(app);

Отключить PowerApps и Flow

До сих пор, у заказчиков возникает вопрос, зачем на CommandBar'e для обычных пользователей доступны actions - PowerApps и Flow, если им просто необходимо работать с контентом?!



Для того, чтобы их отключить с помощью csom, мы можем изменить следующее свойства:

clientContext.Site.DisableAppViews = true;
clientContext.Site.DisableFlows = true;
clientContext.ExecuteQuery();

Вариант с помощью PowerShell
И так же, вариант PnP PowerShell




четверг, 22 сентября 2011 г.

js для ButtonField ButtonType="Image" в GridView

Спросили меня на днях, как добавить js для ButtonField ButtonType="Image", вроде мелоч а сразу и не сообразил, не долго лазия в google дал ответ))):
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
 if (e.Row.RowType == DataControlRowType.DataRow &&

  (e.Row.RowState ==

 DataControlRowState.Normal || e.Row.RowState == DataControlRowState.Alternate))
  {
  if (e.Row.Cells[columnGrid].Controls[0] is ImageButton)
   {
    ((ImageButton)e.Row.Cells[columnGrid].Controls[0]).Attributes.Add("onclick",
    "alert('123');");
   }
  }
}

среда, 21 сентября 2011 г.

Запись в PeopleEditor

Решил записать данные в PeopleEditor, нашел такой способ:

ArrayList arList = new ArrayList();
PickerEntity ent = new PickerEntity();
ent.Key = userName;
arList.Add(ent);
PeopleEditor1.UpdateEntities(arList);

понедельник, 5 сентября 2011 г.

Получение данных из asp:FileUpload и запись в ListItem.Attachment

В веб-часть добавим:

<asp:FileUpload ID="FileUpload1" runat="server"/>
   
в code behinde пишем:

ViewState["fileContents"] = GetFileContents(FileUpload1.PostedFile);

byte[] myfile = (byte[])ViewState["fileContents"];

SPListItem item = web.Lists["nameList"].Items.Add();
item["Title"]="nameListItem";
item.Attachments.Add(FileUpload1.FileName, myfile);
item.Update()
private byte[] GetFileContents(HttpPostedFile postedFile)
        {           
            HttpPostedFile file = postedFile;
            Stream fstream = file.InputStream;
            byte[] contents = new byte[fstream.Length];
            fstream.Read(contents, 0, (int)fstream.Length);
            fstream.Close();
            fstream.Dispose();
            return contents;
        }

Получение данных из SharePoint:PeopleEditor и запись в SPFieldUserValueCollection

В веб-часть добавляем:

<SharePoint:PeopleEditor ID="PeopleEditor1" BorderStyle="Solid" BorderWidth="1" BorderColor="Black" runat="server" AllowEmpty="false" MultiSelect="true" SelectionSet="User" />

в code behinde пишем:

SPFieldUserValueCollection
fieldUserValueColl = new SPFieldUserValueCollection();
int index = 0;
for (index = 0; index <= this.PeopleEditor1.ResolvedEntities.Count - 1; ++index)
{
PickerEntity pickerEntity = (PickerEntity)this.PeopleEditor1.ResolvedEntities[index];
fieldUserValueColl.Add(
new SPFieldUserValue(web, Convert.ToInt32(pickerEntity.EntityData["SPUserID"]), pickerEntity.Key));
}
Propertis.ListItem["Соавторы"] = fieldUserValueColl;
Propertis.ListItem.Update();

понедельник, 27 июня 2011 г.

Сериализация в C#

Стояла задача: сохранение значений формы приложения, решил использовать сериализацию. Разработал класс, в котором будут храниться значения с элементов формы:
public class DataClass
{
public DataClass() { }
public string TextBox = "";
public string RichTextBox = "";
}

При загрузки формы делаю десериализацию:
private void Form1_Load(object sender, EventArgs e)
{
XmlReader reader = new XmlTextReader("nameXml.xml");
XmlSerializer serializer = new XmlSerializer(typeof(DataClass)); DataClass sd = (DataClass)serializer.Deserialize(reader); reader.Close();
reader.Close();
textBox1.Text = sd.TextBox;
richTextBox1.Text = sd.RichTextBox;
}

При закрытии сериализацию:
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
DataClass obj = new DataClass();
obj.TextBox = textBox1.Text;
obj.RichTextBox = richTextBox1.Text;
XmlWriter writer = new XmlTextWriter("nameXml.xml", System.Text.Encoding.UTF8);
XmlSerializer sr = new XmlSerializer(obj.GetType());
sr.Serialize(writer, obj);
writer.Close();
}