LuckSound
LuckSound

Reputation: 996

Get current item from custom editor Sitecore 6.5


I have trouble with get current item where I define custom editor.
I need to get Id of current page (article) but Sitecore.Context.Item return to me null. How get id from current item?

UPD:
Editor aspx file is test for work

<asp:Repeater ID="Comments" runat="server">
 <ItemTemplate>
    <div>
        <b><%# DataBinder.Eval(Container.DataItem, "Name")%></b>
        <p><%# DataBinder.Eval(Container.DataItem, "Text")%></p>         
    </div>
 </ItemTemplate>
 <SeparatorTemplate><hr /></SeparatorTemplate>
</asp:Repeater>

cs (Page_Load):

protected void Page_Load(object sender, EventArgs e)
{
    var currentItem = Sitecore.Context.Database.GetItem(Request.QueryString["id"]);

    using (var connection = new SqlConnection(@"..."))
    {
        var query = "SELECT Name, Text from dbo.Comments " +
            "WHERE Article = @CurrentItemId";
        var command = new SqlCommand(query, connection);
        command.Parameters.Add("@CurrentItemId", System.Data.SqlDbType.UniqueIdentifier).Value = currentItem.ID.ToGuid();
        try
        {
            connection.Open();
            var list = new List<Comment>();
            SqlDataReader reader = command.ExecuteReader();
            while (reader.Read())
            {
                list.Add(new Comment(reader[0].ToString(), reader[1].ToString()));
            }

            Comments.DataSource = list;
            Comments.DataBind();

            reader.Close();
        }
        finally
        {
            connection.Close();
        }
    }
}

Upvotes: 0

Views: 1389

Answers (2)

Martijn van der Put
Martijn van der Put

Reputation: 4082

You need to get the current item ID and current language from the querysting

// get the current Item and language
string itemID = Request.QueryString["id"];
Language language = LanguageManager.GetLanguage(Request.QueryString["la"]);

if (language != null && !string.IsNullOrEmpty(itemID))
{
    Database masterDB = Sitecore.Configuration.Factory.GetDatabase("master");
    CurrentItem = masterDB.GetItem(itemID, language);
}

Upvotes: 1

LuckSound
LuckSound

Reputation: 996

I find id of this item. You can get item_id from QueryStrings of tour Request:
Request.QueryString["id"].

I had not enough to find the answer becouse id of item from QueryStrings get in format {XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}

Upvotes: 0

Related Questions