答案可能是显而易见的,但我没有看到任何我可以使用的东西,除了相反的 - 操纵孩子的父母 - 所以我发布了新的。
我有一个我正在购买的购物车系统我公司购买并且我是.NET的新手,所以我甚至可能没有正确地问这个。
我的商店在结帐部分有一个页面,看起来基本上是这样的:
PaymentPage.ascx:
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="PaymentPage.ascx.cs" Inherits="ConLib_PaymentPage" %>
<%@ Register Assembly="CommerceBuilder.Web" Namespace="CommerceBuilder.Web.UI.WebControls" TagPrefix="cb" %>
<%@ Register Src="~/Checkout/PaymentForms/CreditCardPaymentForm.ascx" TagName="CreditCardPaymentForm" TagPrefix="uc" %>
<ajax:UpdatePanel ID="PaymentAjax" runat="server">
<ContentTemplate>
On page controls, etc.
Then a checkbox saying they've read the terms and agree:
<div id="terms">
<asp:CheckBox ID="AgreeTerms" runat="server" Text="I agree to the Terms Of Service" CssClass="Terms" AutoPostBack="True" OnCheckedChanged="AgreeTerms_Clicked"/>
</div>
我想要完成的任务是在OnCheckedChanged事件中我要启用或禁用CreditCardPaymentForm控件中的图像按钮。
该代码如下所示:
<%@ Control Language="C#" ClassName="CreditCardPaymentForm" EnableViewState="false" %>
<%@ Register Assembly="CommerceBuilder.Web" Namespace="CommerceBuilder.Web.UI.WebControls" TagPrefix="cb" %>
<%@ Register assembly="wwhoverpanel" Namespace="Westwind.Web.Controls" TagPrefix="wwh" %>
... a <script> block with some code and then HTML
<span class="TTAActionButton">
<br>
<asp:ImageButton ID="CreditCardButton" runat="server" ToolTip="Pay With Card" SkinID="TTAPlaceOrder" OnClick="CreditCardButton_Click" />
<asp:HiddenField runat="server" ID="FormIsSubmitted" value="0" />
<br /><br /><br />
</span>
我希望能够打开和关闭CreditCardButton,具体取决于是否选中了复选框。我会在页面代码隐藏中有例程:
public void AgreeTerms_Clicked(object sender, EventArgs e)
{
if (AgreeTerms.Checked)
CreditCardButton.Enabled = false;
}
但我尝试的每一种排列都失败了。
我缩写了代码,但如果我遗漏了太多请告诉我。
感谢您的帮助,如果您认为我对.NET一无所知,那么请多谢! 吉姆
答案 0 :(得分:1)
在CreditCardPaymentForm控件中,创建一个公开CreditCardButton可见性的属性,而不是使用OnCheckedChanged函数处理程序中父级的可见性。
public bool ShowCreditCardButton
{
get { return CreditCardButton.Visable; }
set { CreditCardButton.Visable = value; }
}
答案 1 :(得分:0)
CreditCardPaymentForm是否包含PaymentPage.ascx?也就是说,表单“使用”PaymentPage用户控件吗?
如果是这样,最好的办法是在支票页面上发布一个事件,该事件是通过选中复选框引发的:
public void AgreeTerms_Clicked(object sender, EventArgs e)
{
if (AgreeTerms.Checked)
OnTermsAgreed();
}
private void OnTermsAgreed()
{
// raise TermsAgreed event
var evt = TermsAgreed;
if (null != evt)
evt(this, EventArgs.Empty);
}
public event EventHandler TermsAgreed;
然后,CreditCardPaymentForm订阅该事件并“做其事”,在您的情况下,启用它知道的按钮。