이런 느낌은 쉬워야합니다.하지만 하루 종일 돌아 다니다 보니 도움이 필요합니다. Web Forms 앱이 있고 AJAX Control Toolkit (v16.1)에서 아코디언을 만들었습니다. 내 코드 숨김은 입력 폴더에서 파일 목록을 가져온 다음 반복합니다. 거기에 논리를 정렬하지만 요점은 이러한 각 파일은 6 미리 정의 된 아코디언 창 헤더 사이에 적절한 장소가 있다는 것입니다. 콘텐츠는 내 정렬 논리를 충족시키는 데 필요한만큼 많은 클릭 가능한 버튼을 포함합니다. 버튼을 클릭하면 내 DB 컨텍스트의 get() 메서드가 호출되어 근처 패널에 GridView를 채 웁니다. 예를 들어 Microsoft Outlook을 생각해 볼 수 있습니다. 이메일은 날짜순으로 정렬되고 개별적으로 클릭 할 수 있으며 인근 뷰에서 렌더링됩니다.AJAX Toolkit 아코디언 안에 버튼을 어떻게 동적으로 추가 할 수 있습니까?
내 문제는 파일이 현재 아코디언 창의 콘텐츠 영역에 LiteralControl로 입력되어 있다는 것입니다. 대신 단추를 추가하려고하지만 다른 제안이 가능합니다. 클릭만으로 GridView를 적절하게 채울 수 있습니다. 여기에 귀하의 도움에 미리, 그리고 감사드립니다 ... 내 코드의 일부는 숙고 할 Default.aspx를
...
<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server">
<asp:GridView ID="TransactionGridView" runat="server" DataSourceID="TransactionODS" CellPadding="4" ForeColor="#333333" GridLines="None" >
<AlternatingRowStyle BackColor="White" />
<EditRowStyle BackColor="#2461BF" />
<FooterStyle BackColor="#5078B3" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#5078B3" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
<RowStyle BackColor="#D3DEEF" />
<SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
<SortedAscendingCellStyle BackColor="#F5F7FB" />
<SortedAscendingHeaderStyle BackColor="#6D95E1" />
<SortedDescendingCellStyle BackColor="#E9EBEF" />
<SortedDescendingHeaderStyle BackColor="#4870BE" />
</asp:GridView>
<asp:ObjectDataSource ID="TransactionODS" runat="server" SelectMethod="GetTransactionSet" TypeName="ZipApprove.Models.TransactionRepository"></asp:ObjectDataSource>
</asp:Content>
<asp:Content ID="HistoryNavigationContent" ContentPlaceHolderID="NavigationPanel" runat="server">
<ajaxToolkit:Accordion
ID="HistoryAccordion"
runat="server"
SelectedIndex="0"
HeaderCssClass="accordionHeader"
HeaderSelectedCssClass="accordionHeaderSelected"
ContentCssClass="accordionContent"
AutoSize="None"
Height="450"
FadeTransitions="true"
TransitionDuration="250"
FramesPerSecond="40"
RequireOpenedPane="false"
SuppressHeaderPostbacks="true">
<Panes></Panes>
<HeaderTemplate></HeaderTemplate>
<ContentTemplate></ContentTemplate>
</ajaxToolkit:Accordion>
</asp:Content>
하여 default.aspx.cs
public partial class _Default : Page
{
protected void Page_Load(object sender, EventArgs e)
{
var files =
Directory.GetFiles(
Server.MapPath("Output_Files"),
"*.*",
SearchOption.AllDirectories
);
// Create the date panes and give them a header
...
AccordionPane lastWeek = new AccordionPane();
lastWeek.HeaderContainer.Controls
.Add(new LiteralControl("A Week Ago"));
...
foreach (var file in files)
{
var fileInfo = new FileInfo(file);
if (fileInfo.Extension == ".csv")
{
string fileDTString =
fileInfo.Name.Substring(
fileInfo.Name.Length - 16,
12
);
DateTime dateTime =
DateTime.ParseExact(
fileDTString,
"MMddyyyyHHmm",
CultureInfo.InvariantCulture
);
...
else if (
dateTime >=
DateTime.Now
.AddDays(-7)
.AddHours(-DateTime.Now.Hour)
.AddMinutes(-DateTime.Now.Minute) &&
dateTime <
DateTime.Now
.AddDays(-1)
.AddHours(-DateTime.Now.Hour)
.AddMinutes(-DateTime.Now.Minute)
)
{
// Parsed between 1 week ago at midnight and up to, not
// including, midnight of the case above
lastWeek.ContentContainer.Controls.Add(
new LiteralControl(
fileInfo.Name.Substring(
0, fileInfo.Name.Length - 4
)
)
);
lastWeek.ContentContainer.Controls.Add(
new Literal()
{
Mode = LiteralMode.PassThrough,
Text = "<br/><br/>"
}
);
}
else if (
...
} // End of CSV "If"
} // End of looping through files
...
HistoryAccordion.Panes.Add(lastWeek);
...
} // End of Page Load method
} // End of class
} // End of namespace
입니다 사이트. 마스터 *
...
<div id="panelsDiv" style="display:flex">
<div
ID="NavigationPanelContainer"
style="
margin: 5px 5px 5px 5px;
width: 250px;
overflow-y: auto;
color: black;
height: 500px">
<asp:ContentPlaceHolder ID="NavigationPanel" runat="server"></asp:ContentPlaceHolder>
</div>
<div class="container body-content"
ID="ContentPanelContainer"
style="
flex: 1;
height: 500px;
margin: 5px 5px 5px 5px;
overflow-y: auto;">
<asp:ContentPlaceHolder ID="MainContent" runat="server" />
</div>
</div>
...
패널 이 두 파일 이름
의 1을 보여주는
예 실행을 클릭해야합니다. 어떤 아이디어?
리터럴 대신 패널을 사용하고 버튼이나 링크를 추가하지 않는 이유는 무엇입니까? 또한 여기에 하이퍼 링크 또는 단추가 아닌 리터럴 파일 이름을 추가하는 것이 보입니까? 새로운 LiteralControl (fileInfo.Name.Substring (0, fileInfo.Name.Length - 4) – Krishna
@Krishna, 고맙습니다. 내가 제안한대로 패널을 사용 했으므로 그 트릭을 수행했습니다. 답변을 공식적으로 추가하여 내가 표시 할 수 있도록 할 것입니다. 맞아? 다시 한번 감사드립니다! –