this one からの質問の続きで、私を大いに助けてくれました。 ListView 内の ASP.NET AJAX Toolkit ModalPopupExtender の動作
私のウェブサイトはショップです。製品は、カテゴリに応じて呼び出されるクラスに設定されています。ユーザーは製品をクリックして、新しいページで開く情報を取得できます。
モーダル ポップアップ エクステンダーを使用して、新しいページに移動するのではなく、このページをポップアップとして表示したいと考えています。上記のリンクのおかげで、これをほぼ達成できます。私の問題は、パネルがあるリストビューの外でメソッド「GetProducts」を呼び出すことができないことです。
aspxのページはこちら
<div id="Panel1" style="display: none;" class="popupConfirmation">
<iframe id="frameeditexpanse" src="ProductDetails.aspx?productID=<%#:Item.ProductID%>" height="161" > // here is the error item does not exist in the context
</iframe>
<div class="popup_Buttons" style="display: none">
<input id="btnClose" value="Close" type="button" />
</div>
</div>
<asp:ListView ID="productList" runat="server" DataKeyNames="ProductID"
GroupItemCount="3" ItemType="Website.Models.Product" SelectMethod="GetProducts"> // method is called here
<ajaxToolkit:ModalPopupExtender runat="server" ID="ModalPopupExtender1"
CancelControlID="btnClose" TargetControlID="PopUpPage"
PopupControlID="Panel1" Drag="true" BackgroundCssClass="ModalPopupBG"
PopupDragHandleControlID="PopupHeader" >
</ajaxToolkit:ModalPopupExtender>
<asp:ImageButton ID="PopUpPage" runat="server"
src="<%#:Item.ImagePath%>" width="100" height="75" /> // button the user clicks to open the pop up of the product description page
それが役立つ場合はページの背後にあるコード
public partial class ProductList : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
public IQueryable<Product> GetProducts([QueryString("id")] int? categoryId)
{
var _db = new Website.Models.ProductContext();
IQueryable<Product> query = _db.Products;
if (categoryId.HasValue && categoryId > 0)
{
query = query.Where(p => p.CategoryID == categoryId);
}
return query;
}
}
メソッドを再度呼び出すことができるように、iframeをフォームビューでラップしようとしましたが、一度しか呼び出せないことがわかります。また、ページの読み込みセクションでメソッドを呼び出すこともできませんでしたエラー。
どんな助けでも大歓迎です。