ASCX ファイル内に次のリピーターがあります。
<asp:Repeater ID="repeater1" runat="server">
<HeaderTemplate>
<ul class="formList">
</HeaderTemplate>
<ItemTemplate>
<li><a href="plugins/umbracocontour/editForm.aspx?guid=<%# ((Umbraco.Forms.Core.Form)Container.DataItem).Id %>"
class="form">
<%# ((Umbraco.Forms.Core.Form)Container.DataItem).Name %></a> <small><a href="plugins/umbracocontour/editForm.aspx?guid=<%# ((Umbraco.Forms.Core.Form)Container.DataItem).Id %>">
Open form designer</a> <a href="plugins/umbracocontour/editFormEntries.aspx?guid=<%# ((Umbraco.Forms.Core.Form)Container.DataItem).Id %>">
View entries</a> </small></li>
</ItemTemplate>
<FooterTemplate>
</ul>
</FooterTemplate>
</asp:Repeater>
という名前のメソッドを介してデータが入力されますShowAllForms()
private void ShowAllForms()
{
using (var formStorage = new FormStorage())
{
var list = formStorage.GetAllForms(false).OrderBy(f => f.Name).Where(form => Security.HasAccessToForm(form.Id)).ToList();
this.repeater1.DataSource = list;
this.repeater1.DataBind();
if (list.Count == 0)
{
this.paneBrowse.Visible = false;
}
}
}
および `SearchForms:
private void SearchForms()
{
var forms =
this.formRepository.GetFormByFreeText(this.txtFormSearch.Text).Where(form => Security.HasAccessToForm(form.Id)).
ToList();
this.repeater1.DataSource = forms;
this.repeater1.DataBind();
}
ShowAllForms()
Page_Load
ポストバックがない場合は で呼び出され、[すべてのフォームを表示] ボタンのクリック イベントでも呼び出されます。SearchForms()
「検索フォーム」ボタンのポストバックで呼び出されます。
管理者以外のユーザーとして、フォームのリストを表示すると、最初はたくさんのフォームが表示されます。次に、アイテムを返さない名前でフォームを検索します。ここまでは順調ですね。ShowAllForms()
次に、最初にすべてのフォームを表示するために呼び出されたを実行する [すべてのフォームを表示] ボタンをクリックします。
ただし、2 回目に呼び出されるとShowAllForms()
、リピーターにフォーム データは表示されません。明確にするために、変数に返されるアイテムがあることがわかりforms
ます。そのため、コレクションは空ではありませんが、それらのアイテムはいずれもリピーターに表示されません。
ここで何が起こっているのか、私は困惑しています。
編集:
ページの OnLoad イベント:
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
this.ShowAllForms();
}
}
OnInit:
protected void Page_Init(object sender, EventArgs e)
{
this.formRepository = TinyIoC.TinyIoCContainer.Current.Resolve<IFormRepository>();
}