<asp:ListView ID="rptProjectList" runat="server" DataSourceID="ObjectDataSource1"
DataKeyNames="ProjectID" EnableViewState="true"
OnItemDatabound="rptProjectList_ItemDataBound" > <EmptyDataTemplate>
</EmptyDataTemplate>
<ItemTemplate>
<%# hasProjectDetail(Eval("ProjectID")) ? "<li id=/"" + Eval("ProjectID") + "/"><a href='#'>" : "<li>"%>
<%# Eval("ProjectTitle")%>
<%# hasProjectDetail(Eval("ProjectID")) ? "</a></li>" : "</li>"%>
</ItemTemplate>
</asp:ListView>
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server"
SelectMethod="GetProjects" TypeName="Cloud1.Projects.BLL.ProjectManager">
</asp:ObjectDataSource>
<telerik:RadToolTipManager ID="radProjectDetail" runat="server" ShowEvent="OnClick" RelativeTo="Mouse"
ManualClose="true" Position="MiddleRight" Animation="Resize" OnAjaxUpdate="radProjectDetail_AjaxUpdate" ContentScrolling="Y" Sticky="true" Height="560"
/>
Cs 代码
protected bool hasProjectDetail(object projectID)
{
return ProjectManager.hasProjectDetail(projectID.ToString());
}
protected void radProjectDetail_AjaxUpdate(object sender, Telerik.Web.UI.ToolTipUpdateEventArgs e)
{
this.UpdateToolTip(e.Value, e.UpdatePanel); //Update tool tip
}
private void UpdateToolTip(string elementID, UpdatePanel panel)
{
Control ctrl = Page.LoadControl("~/UserControls/ProjectDetail.ascx");
panel.ContentTemplateContainer.Controls.Add(ctrl); //载入ProjectDetail.ascx控件
UserControls_ProjectDetail details = (UserControls_ProjectDetail)ctrl;
details.ProjectID = elementID; //把客户端的ID传给UserControl中的ProjectID
}
protected void rptProjectList_ItemDataBound(object sender, ListViewItemEventArgs e)
{
ListViewDataItem dataItem = (ListViewDataItem)e.Item;
Project project = dataItem.DataItem as Project; //把ListViewDataItem转化为object Project
if (project != null)
{
this.radProjectDetail.TargetControls.Add(project.ProjectID, project.ProjectID, true); //第二个参数作为OnAjaxUpdate 中的e.Value
}
}
User control 代码
<div class="projectDetail">
<div class="projectDescription">
<h1><%= project.ProjectTitle %></h1>
<p><%= project.ProjectDescription %></p>
</div>
<asp:Repeater ID="rptPictures" runat="server">
<ItemTemplate>
<img id="Img1" src='<%# "~/Products/Thumbnail.aspx?file=" + Eval("PictureFile") + "&size=250" + "&folder=~/Products/Pictures/ Projects" %>' alt='<%# Eval("PictureDescription") %>' runat="server" />
</ItemTemplate>
</asp:Repeater>
</div>
public partial class UserControls_ProjectDetail : System.Web.UI.UserControl
{
private string _projectID;
public string ProjectID //OnAjaxUpdate中LoadControl获取ProjectID
{
get { return _projectID; }
set { _projectID = value; }
}
protected Project project = new Project();
protected void Page_Load(object sender, EventArgs e)
{
project = ProjectManager.GetProjectByProjectID(ProjectID);
List<ProjectPicture> pictures = new List<ProjectPicture>();
pictures = ProjectManager.GetProjectPictureByProjectID(ProjectID);
rptPictures.DataSource = pictures;
rptPictures.DataBind();
}
}