1

xml/xslt から動的コントロールをロードするリストビューがあります

 <asp:ListView ID="DynamicFields" runat="server"
          DataSourceID="CustomFields" 
          OnItemDataBound="DynamicFields_ItemDataBound"                                                                              
          GroupItemCount="2" ItemPlaceholderID="itemsGroup" 
          GroupPlaceholderID="itemsGroup">
      <LayoutTemplate>
         <table width="470" border="0" cellpadding="0" cellspacing="10">
             <asp:PlaceHolder ID="itemsGroup" runat="server" />
         </table>
      </LayoutTemplate>
      <GroupTemplate>
         <tr>
             <asp:PlaceHolder runat="server" ID="itemsGroup"></asp:PlaceHolder>
         </tr>
      </GroupTemplate>
      <ItemTemplate>
           <custom:CustomField ID="Field" runat="server" 
              FieldIndex='<%# Eval("index") %>' /> 
      </ItemTemplate>  
      <AlternatingItemTemplate>
           <custom:CustomField ID="Field" runat="server" 
              FieldIndex='<%# Eval("index") %>' />
      </AlternatingItemTemplate>        
</asp:ListView>  

そして、私のページのコードビハインドでは、ユーザー コントロール プロパティをバインドし、xml を読み込んでコントロールを作成する bind メソッドを呼び出しています。

protected void DynamicFields_ItemDataBound(object sender, ListViewItemEventArgs e)
    {


        if (e.Item.ItemType == ListViewItemType.DataItem)
        {
            ucCustomField uc = (ucCustomField)e.Item.FindControl("Field");
            uc.FileName = FORM_PATH;
            uc.FormName = FORM_NAME;
            uc.LoadXMLFile(); //binding xml content here
        }
    }

このリストビューを、静的コントロールと保存ボタンを持つ既存のフォームに追加します。ボタンをクリックすると、検証が行われ、検証の概要ポップアップ メッセージ [期待] が表示され、ポップアップで [OK] をクリックすると、リストビューのすべての動的コントロールが消えます。これらのコントロールと、ポストバック後に入力された可能性のある値を表示し続けるにはどうすればよいですか?

4

3 に答える 3

0

そして、私のページのコードビハインドでは、ユーザー コントロール プロパティをバインドし、xml を読み込んでコントロールを作成するバインド メソッドを呼び出しています。

Bind/Databind メソッドを呼び出している場所がわかりますか。それをページロードに入れると、問題が解決すると思います。ポストバックは、ページに動的に追加されたものをすべて削除します。

よろしく、 SJ

于 2011-12-26T17:42:31.070 に答える
0

ヘッダー内にいないことを確認してください。これが役立つかどうかはわかりませんが、次のことを試してください

if(e.Item.ItemType == ListItemType.Item 
    || e.Item.ItemType == ListItemType.AlternatingItem)
{
}
于 2011-12-26T17:44:51.723 に答える
0

DynamicFields.DataBind()when Page.IsPostbackis trueを呼び出すことでこれを修正しました

于 2011-12-28T19:58:59.507 に答える