访问页眉/页脚模板C#中的控件
本文关键字:控件 访问 | 更新日期: 2023-09-27 18:19:25
我的问题是我在FooterTemplate和HeaderTemplate(在数据列表中)中有一个按钮,我需要基于bool禁用/启用它们。我知道使用ItemDataBound,但页面其余部分的设置方式不起作用,因为它唯一被绑定的时间是初始页面加载。
我曾经使用javascript处理过这个问题,但发生了一些事情,我的javascript不再起作用。所以我希望能够通过代码后台来完成。那么,是否有使用foreach循环访问控件的方法呢?
在我尝试这样做的事件中,我有以下循环:
foreach (DataListItem dli in list.Items)
{
int qty = Convert.ToInt32(((TextBox)dli.FindControl("qtyTextBox")).Text);
int productID = Convert.ToInt32(((Literal)dli.FindControl("prodId")).Text);
isQtyValid = COMMONACES.GetValues.getTotalQty(sessionID, productID, qty);
lblError.Visible = !isQtyValid;
lblError.Text = isQtyValid ? string.Empty : "The total quantity for one or more items exceeds the maximum. The total quantity includes items already in the cart.";
Page.ClientScript.RegisterStartupScript(this.GetType(), "function", "SetButtonStatus()", true); //used to access javascript
}
Javascript:
function SetButtonStatus() {
var bb = document.getElementsByClassName('ButtonSubmit');
for (var i = 0; i < bb.length; i++) {
bb[i].disabled = <%=(!isQtyValid).ToString().ToLower()%>;
}
}
如果这是有用的信息,我会在文本更改事件和所选的已更改的事件中尝试这样做。如果需要任何其他信息,我会尽我所能提供。
谢谢你能提供的任何帮助。
遵循您的代码:
Page.ClientScript.RegisterStartupScript(this.GetType(), "function", "SetButtonStatus();", true); //used to access javascript
和在SetButtonStatus()中
document.getElementById('<%= ControlButton.ClientID %>').disabled = true/false;
如果您的代码以前工作过,现在已经停止,请确保您没有JavaScript错误,即数据列表中显示的数据导致了该问题。
bool isNotValid= false;
foreach (DataListItem dli in list.Items)
{
int qty = Convert.ToInt32(((TextBox)dli.FindControl("qtyTextBox")).Text);
int productID = Convert.ToInt32(((Literal)dli.FindControl("prodId")).Text);
isQtyValid = COMMONACES.GetValues.getTotalQty(sessionID, productID, qty);
lblError.Visible = !isQtyValid;
lblError.Text = isQtyValid ? string.Empty : "The total quantity for one or more items exceeds the maximum. The total quantity includes items already in the cart.";
if(!isQtyValid)
isNotValid=true;
}
Page.ClientScript.RegisterStartupScript(this.GetType(), "function", string.Format("SetButtonStatus('{0}')", isNotValid.ToString().ToLower()) , true); //used to access javascript
function SetButtonStatus(isNotValid) {
var bb = document.getElementsByClassName('ButtonSubmit');
for (var i = 0; i < bb.length; i++) {
bb[i].disabled = isNotValid;
}
}