如何使用Sitecore API访问Sitecore\u Web数据库表

如何使用Sitecore API访问Sitecore\u Web数据库表,sitecore,sitecore7,Sitecore,Sitecore7,嗨,我是Sitecore的新手。我想知道如何通过Sitecore API从Sitecore Web数据库访问任何表值,因为我想从Sitecore\u Web数据库中的表填充dropdownlist。我们如何使用Sitecore查询从Sitecore\u Web数据库访问数据 我不建议您直接访问Sitecore_Web数据库。您到底想做什么? Sitecore Api有很多类和方法用于访问Sitecore项目,但您不能直接访问数据库。 也许这对你有帮助 您需要创建一些项目来填充下拉列表 项目是数据

嗨,我是Sitecore的新手。我想知道如何通过Sitecore API从Sitecore Web数据库访问任何表值,因为我想从Sitecore\u Web数据库中的表填充dropdownlist。我们如何使用Sitecore查询从Sitecore\u Web数据库访问数据


我不建议您直接访问Sitecore_Web数据库。您到底想做什么? Sitecore Api有很多类和方法用于访问Sitecore项目,但您不能直接访问数据库。 也许这对你有帮助

您需要创建一些项目来填充下拉列表

项目是数据库中的记录。项目是Sitecore站点的基本构建块。项目可以表示任何类型的信息,例如内容、媒体文件、布局等

项目始终具有唯一标识数据库中项目的名称和ID。项目具有定义项目包含哪些字段的模板。一个项目代表一个单一版本的内容是一种单一的语言。 可以使用项从数据库检索项

一个项可以有多个子项或子项。可以通过Children属性访问这些子项。在返回结果项之前,将检查其安全性和工作流。因此,虽然项目可能有子项目,但当前用户可能会被拒绝访问这些子项目。Parent属性定义此项的单个父项。 一个项目代表内容的一个单一语言的单一版本。项目的语言可以从language属性获得,而版本可以从version属性获得

在更改名称或任何字段值之前,项目必须处于编辑状态。如果不是,则引发异常。要进入编辑状态,请使用BeginEdit方法;要结束编辑状态,请使用EndEdit方法。EditContext类可用作BeginEdit/EndEdit的快捷方式


我从Sitecore Api文档中了解到这一点

正如Sitecore攀登者所说,您不会直接访问Sitecore数据库-这不是Sitecore支持的内容。通常,您可以通过Sitecore API通过以下步骤实现这一点:

  • 从Sitecore树中检索节点,该节点包含表示下拉项的子项
  • 检索子项
  • 将下拉列表数据绑定到子项列表
  • 在ascx中,您可以有如下内容:

    <asp:DropDownList ID="exampleDropDown" runat="server"/>
    
    
    
    在代码背后:

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            var item = Sitecore.Context.Database.GetItem("/sitecore/content/SiteData/StuffForADropDownList");
            if (item != null)
            {
                exampleDropDown.DataTextField = "Text";
                exampleDropDown.DataValueField = "Value";
                exampleDropDown.DataSource = from i in item.Children.AsEnumerable<Sitecore.Data.Items.Item>()
                        select new
                        {
                            Text = i["Text"],
                            Value = i.ID.ToString()
                        };
                exampleDropDown.DataBind();
            }
        }
    }
    
    受保护的无效页面加载(对象发送方,事件参数e)
    {
    如果(!Page.IsPostBack)
    {
    var item=Sitecore.Context.Database.GetItem(“/Sitecore/content/SiteData/stufforedropdownlist”);
    如果(项!=null)
    {
    exampleDropDown.DataTextField=“Text”;
    exampleDropDown.DataValueField=“Value”;
    exampleDropDown.DataSource=来自item.Children.AsEnumerable()中的i
    选择新的
    {
    Text=i[“Text”],
    Value=i.ID.ToString()
    };
    例如dropdown.DataBind();
    }
    }
    }
    

    本例假设您在
    /sitecore/content/SiteData/stufforedropdownlist
    中有一个项目,其中包含一些子项目,每个子项目都有一个名为
    Text
    的字段。默认情况下,在sitecore中,您将永远不会使用真实的数据库对象,而不会使用sitecore API填充对象。Sitecore API将为您提供Sitecore后端的数据。 如果您想将项目列表作为数据源填充到下拉列表中,请尝试以下操作:

    <asp:DropDownList ID="exampleDropDown" runat="server"/>
    
    var items=Sitecore.Context.Item.GetChildren().toList(); yourdropdown.Datasource=items; yourdropdown.Databind()

    显然,正确设置了Datatext和Datevalue键,但这是标准的.Net。
    在Sitecore中,切勿直接从数据库中获取数据并使用Sitecore API。

    请使用内置服务访问Sitecore项目。它提供了在Get Item方法中选择数据库的选项

    您可以使用以下URL访问sitecore服务:


    {Your Site}/sitecore/shell/webservice/service.asmx

    假设,我在sitecore的网页上有一个下拉列表,下拉列表中的数据需要来自数据库表。那个么,如何使用sitecore将数据填充到下拉列表中?定义数据库表?这是您自己的自定义数据库吗(即与Sitecore无关)?定义“使用sitecore将数据填充到下拉列表中”?您的意思是进入Sitecore管理界面,以便在内容编辑器中可以选择它吗?什么表?这是定制的桌子吗?我认为您应该阅读@Sitecore-climper所述的Sitecore API。这里还有一些关于查询Sitecore的文档:好的,很清楚。但我的问题是,我有一个包含不同列的excel工作表,我必须使用excel工作表列数据来填充dropdownlist。在Sitecore内容编辑器中,是否有任何方法从excel工作表中导入我们想要的列,并将其作为项目插入Sitecore Home中,以便我们可以从指定路径获取这些项目,并按需要填写droddown上面提到过,Sitecore内容编辑器中没有内置用于导入数据的内容,但这可以通过一些自定义C#代码来完成。这个答案是一个有用的起点:Ok填充下拉列表对我来说很清楚。现在,我必须在所有下拉值的基础上实现搜索功能。我将如何在sitecore 7中进行搜索?我认为这可能值得提出一个新问题