我有一個數據綁定,模板控件,模板化區域內我創建一個事件處理程序的控制,像這樣: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層次結構發生變化或者什麼,我可以毫無困難地訪問這個關鍵字。在事件處理程序中使用此Key的最佳方式是什麼?
這更像我正在尋找的東西。我會確保它的工作,並將其標記爲正確的迴應。喬恩的答案看起來像是同樣的事情,但看起來像你先發布。 :-) – StriplingWarrior 2009-06-11 15:21:29