Как использовать элементы управления в sharepoint без использования spcontext.current - PullRequest
1 голос
/ 10 февраля 2010

Для управления Sharepoint требуется SPContext.current.site/web, но я открываю много сайтов, используя site = new spsite (siteID); и я хочу использовать элементы управления. Так у вас есть идея или доступный класс для использования элементов управления asp.net в sharepoint?

Ответы [ 2 ]

0 голосов
/ 12 февраля 2010

Поддельный Spcontext - решение вашей проблемы. Google, это может помочь вам.

0 голосов
/ 12 февраля 2010
//open site and web
sSiteID = Request.QueryString["siteID"];
sWebID = Request.QueryString["parentWebID"];
site = new SPSite(new Guid(sSiteID));
web = site.OpenWeb(new Guid(sWebID));
//show the properties of the list in the edit form
(...)
if ((list.AllowContentTypes == true) && (list.ContentTypesEnabled == true))
{
    (...)
    SharePointWebControls oSharePointWebControls = new SharePointWebControls(); 

    cntrl = oSharePointWebControls.GetSharePointControls(field, list, item, SPControlMode.Edit, "");
}

public Control GetSharePointControls(SPField field, SPList list, SPListItem item, SPControlMode mode, string strType)
{
    switch (field.FieldRenderingControl.ToString())
    {
        case "Microsoft.SharePoint.WebControls.TextField":
            return CreateTextFieldControl(field, list, item, mode);
    }
}

#region Create SharePoint Controls
private static Control CreateTextFieldControl(SPField field, SPList list, SPListItem item, SPControlMode mode)
{
    TextField tf = new TextField();
    //tf.EnableViewState=false;
    tf.ListId = list.ID;
    if (item != null)
    {
        tf.ItemId = item.ID;
    }
    tf.FieldName = field.Title;
    tf.ID = "Field_" + field.Id;
    //tf.CssClass = "spsControl";
    tf.ControlMode = mode;
    //check if the field has a default value
    if (field.DefaultValue != "null" && field.DefaultValue != null)
    {
        tf.Text = field.DefaultValue.ToString();
    }
    try
    {
        RequiredFieldValidator cntrlValidator = ((RequiredFieldValidator)tf.Controls[0].Controls[3]);
    }
    catch (Exception ex)
    {
    }

    return tf;
}

все элементы управления sharepoint, которые я использую, работают, и tf возвращается правильно, но когда я не на текущем сайте или в текущем веб это исключение произошло: InvalidArgumentException в элементе управления. Я думаю, что эти элементы управления не работают за пределами текущего сайта или сети, и я должен использовать элемент управления asp.net? Это правильно или есть другое решение? Заранее спасибо ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...