#asp.net #updatepanel #web-controls
#asp.net #панель обновления #веб-элементы управления
Вопрос:
У меня есть веб-элемент управления, куда я помещаю панель обновления. Этот элемент управления зарегистрирован на главной странице. На странице содержимого этого главного элемента у меня есть кнопка, с помощью которой я хочу вызвать обновление моей панели обновлений в веб-элементе управления. Это кажется таким простым… правильно!? Но это не сработает.
Вот моя ошибка и код:
Главная страница:
<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="SiteMaster1.master.cs" Inherits="KR.Obsession.UI.Web.Masters.SiteMaster1" %>
<%@ Register Src="~/UserControls/ShoppingCart.ascx" TagName="Cart" TagPrefix="uc" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
</head>
<body>
<form id="form1" runat="server">
<ajaxToolkit:ToolkitScriptManager EnablePageMethods="true" runat="server" ID="AjaxScrpMngr1"
EnablePartialRendering="true" EnableScriptGlobalization="true" EnableScriptLocalization="true" >
</ajaxToolkit:ToolkitScriptManager>
<asp:ContentPlaceHolder ID="content" runat="server">
</asp:ContentPlaceHolder>
</form>
</body>
</html>
Веб-элемент управления:
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="ShoppingCart.ascx.cs" Inherits="KR.Obsession.UI.Web.UserControls.ShoppingCart" %>
<asp:UpdatePanel runat="server" ID="PanUpdateCart" UpdateMode="Conditional" >
<ContentTemplate>
<div class="UserControlCart">
<div class="CartImage">
<asp:HyperLink runat="server" ID="LnkCart" ImageUrl="~/Images/Cart.gif" Width="29" Height="27" />
</div>
<div class="CartContent">
<asp:Literal runat="server" ID="LtrCount" Text="У вас: <b>{0}</b> вещиц" />
<br />
<asp:Literal runat="server" ID="LtrTotal" Text="на сумму <b>{0}</b>" />
</div>
</div>
</ContentTemplate>
</asp:UpdatePanel>
и страница:
%@ Page Title="" Language="C#" MasterPageFile="~/Masters/SiteMaster1.Master" AutoEventWireup="true" CodeBehind="ShowItem.aspx.cs" Inherits="KR.Obsession.UI.Web.ShowItem" %>
<%@ MasterType VirtualPath="~/Masters/SiteMaster1.Master" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:LinkButton runat="server" ID="LnkBtnAddToCart" CssClass="AddToCart" Text="ДОБАВИТЬ В КОРЗИНКУ" Enabled="false" OnClick="btnAddToCart_Click" />
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="LnkBtnAddToCart" EventName="Clicked" />
</Triggers>
</asp:UpdatePanel>
</asp:Content>
В коде моего элемента управления у меня есть:
using System;
using KR.Obsession.UI.Core;
namespace KR.Obsession.UI.Web.UserControls
{
public partial class ShoppingCart : SharedBaseControl
{
protected void Page_Load(object sender, EventArgs e)
{
PanUpdateCart_Load();
}
public void PanUpdateCart_Load()
{
if (this.Profile.ShoppingCart.Items.Count > 0)
{
LtrCount.Text = string.Format(LtrCount.Text, this.Profile.ShoppingCart.Items.Count.ToString());
LtrTotal.Text = string.Format(LtrTotal.Text, UiUtilities.FormatPrice(this.Profile.ShoppingCart.Total));
}
else
{
LtrCount.Text = string.Format(LtrCount.Text, 0);
LtrTotal.Text = string.Format(LtrTotal.Text, UiUtilities.FormatPrice(0));
}
}
}
}
Я хочу, чтобы метод веб-управления запускался PanUpdateCart_Load()
при нажатии кнопки страницы асинхронным способом. Возможно ли это?
Комментарии:
1. Чтобы правильно вставить код, вставьте его, затем выделите и используйте
{ }
кнопку
Ответ №1:
EventName="Clicked" />
Я думаю, что должно быть
EventName="Click" />
но я не уверен, что именно это является причиной проблемы, но вы можете проверить.
Комментарии:
1. Бала Р! Это не имеет никакого значения.