죄송합니다. 다른 답변으로 추가해야했습니다. 다음은 폴더 사용자 컨트롤의 간단한 샘플입니다.
컨트롤 만들기 ... 원하는 포맷.
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="FolderButton.ascx.cs" Inherits="FolderButton" %>
<div>
<asp:ImageButton ID="btnImage" runat="server" ImageUrl="yourfolder.jpg" />
<asp:LinkButton ID="btnTitle" runat="server" />
</div>
속성을 추가하고 (이미지 및 링크 버튼을 클릭 할 때 클릭 이벤트를 해고하는 것을 잊지 마세요) 뒤에 코드에 이벤트를 클릭
public partial class FolderButton : System.Web.UI.UserControl
{
public int DatabaseId { get; set; }
public string Name { get; set;} // you can even set your linkbutton text here.
public event EventHandler Click;
}
는 FolderButton 컨트롤의 중계기 만들기
protected void rptFolders_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Book book = (Book)e.Item.DataItem; //Or whatever your passing
FolderButton btnFolder = e.Item.FindControls("FolderButton1");
btnFolder.Name=book.Name;
btnFolder.DatabaseId=book.Id;
btnFolder.Click += new EventHandler(FolderClicked);
}
}
: 데이터 바인딩에
<asp:Repeater ID="rptFolders" runat="server" OnItemDataBound="rptFolders_ItemDataBound">
<ItemTemplate>
<uc1:FolderButton ID="FolderButton1" runat="server" />
</ItemTemplate>
</asp:Repeater>
설정 폴더 아이디
마지막으로 당신은 다음 이벤트를 클릭에서 원하는 whever 수행 할 수 있습니다
void FolderClicked(object sender, EventArgs e)
{
int id = ((FolderButton)sender).DatabaseId;
/// Do something with your Id
}
아무것도 불분명 알려줘. 이것은 단지 빠른 프리 핸드 샘플이므로 오타 또는 나쁜 습관을 용서하십시오 ... 코드는 단지 demostration 목적만을위한 것입니다.
출처
2010-07-22 15:10:03
CkH
좋아,이게 좋아 보인다. 그러나이 방법을 사용하면 각 페이지의 항목을 항상 다시 가져올 수 있습니까? 이제는 브레인 스토밍 만하고, 어쨌든 treeview와 아이콘보기에 대해 동일한 쿼리를 사용할 수 있습니까? 가상 XML 파일로 변환하고 바인딩하십시오. 아니면 그냥 데이터베이스에서 모든 것을 선택하고 세션에 저장하고 누군가가 파일을 바꿀 때까지 모든 것을 다시 선택할 때까지 사용해야합니다. – eski
여기서 무엇을 얻고 있는지 잘 모르겠다. 전체 솔루션 전체를 알지 못한다. 요구 사항에 따라 다양한 옵션이 있습니다. 캐시, 세션, Sql 종속성 캐시 및 계속 켜져 있습니다. 이 모든 것은 데이터가 다른 요소 (사용자, 응용 프로그램 수준 데이터 등)간에 얼마나 많이 변경되는지에 따라 다릅니다. 여기에 너무 많은 요소가 있습니다. 새로운 질문을 시작하고 싶을 수도 있습니다. 알려줘. – CkH