У меня есть, шаблонное управление с привязкой к данным, так и внутри шаблонной области создать элемент управления с обработчиком событий, например, так:ASP.NET: доступ DataItem из обработчика событий
<tnl:DisplayTree ID="DisplayTree1" runat="server" KeyPropertyName="Id"
ParentPropertyName="ParentDemographic" DataSourceID="DemographicObjectSource">
<ItemTemplate>
<asp:CheckBox ID="DemogSelector" runat="server" OnCheckedChanged="DemogSelector_OnCheckedChanged" />
<asp:Label ID="InlineEditLabel" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "Name") %>'></asp:Label>
</ItemTemplate>
</tnl:DisplayTree>
В рамках мероприятия обработчик, я хотел бы иметь возможность обнаруживать Ключ элемента, для которого был создан элемент управления. Например:
protected void DemogSelector_OnCheckedChanged(object sender, EventArgs e)
{
CheckBox selector = (CheckBox)sender;
DisplayTree.TreeNode treeNode = (DisplayTree.TreeNode)selector.Parent.Parent.Parent.Parent;
Label1.Text += (int)treeNode.Key + ", ";
}
Как вы можете видеть, этот подход требует тщательного знания иерархии внутри моего класса DisplayTree.TreeNode (то есть я должен знать, что sender.Parent.Parent.Parent.Parent где я буду найдите объект DisplayTree.TreeNode). Я хотел бы сделать это немного более надежным, так что если моя иерархия TreeNode изменится или что-то еще, я могу без проблем получить доступ к ключу. Каков наилучший способ сделать этот ключ доступным из обработчика событий?
Это больше похоже на то, что я искал. Я убеждаюсь, что это работает, и отмечаем его как правильный ответ. Ответ Джона похож на одно и то же, но похоже, что вы отправили сначала. :-) – StriplingWarrior