Reputation: 996
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
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
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