C# 访问页眉/页脚模板C中的控件#

C# 访问页眉/页脚模板C中的控件#,c#,asp.net,datalist,C#,Asp.net,Datalist,我的问题是我在FooterTemplate和HeaderTemplate(在数据列表中)中有一个按钮,我需要根据bool禁用/启用它们。我知道如何使用ItemDataBound,但是页面其余部分的设置方式不起作用,因为它绑定的唯一时间是初始页面加载 我曾经用javascript做过这项工作,但后来发生了一些事情,我的javascript不再做这项工作。因此,我希望能够通过代码隐藏来实现这一点。那么,是否仍然可以使用foreach循环来访问控件 在我尝试这样做的事件中,我有以下循环: forea

我的问题是我在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()%>;
    }
}
函数SetButtonStatus(){
var bb=document.getElementsByClassName('ButtonSubmit');
对于(变量i=0;i
我尝试在文本更改事件以及selectedindexchanged事件中执行此操作,如果这是有用的信息。如果需要任何其他信息,我会尽力提供

感谢您提供的任何帮助。

请遵循您的代码:

 Page.ClientScript.RegisterStartupScript(this.GetType(), "function", "SetButtonStatus();", true); //used to access javascript
在SetButtonStatus()中

document.getElementById(“”).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;
    }
}
bool isNotValid=false;
foreach(list.Items中的DataListItem dli)
{
int qty=转换为32(((文本框)dli.FindControl(“qtyTextBox”)).Text);
int productID=Convert.ToInt32(((文字)dli.FindControl(“prodId”)).Text);
isQtyValid=COMMONACES.GetValues.getTotalQty(sessionID,productID,qty);
lblError.Visible=!isQtyValid;
lblError.Text=isQtyValid?string.Empty:“一个或多个项目的总数量超过最大值。总数量包括购物车中已有的项目。”;
如果(!isQtyValid)
isNotValid=true;
}
Page.ClientScript.RegisterStartupScript(this.GetType(),“function”,string.Format(“SetButtonStatus({0}')”),isNotValid.ToString().ToLower()),true)//用于访问javascript
函数SetButtonStatus(无效){
var bb=document.getElementsByClassName('ButtonSubmit');
对于(变量i=0;i
我实际上使用GetElementsByCassName('ButtonStatus'),因为有两个按钮,然后执行一个循环,获取这两个按钮,将在我的问题中编辑它,以便您可以看到它看起来正常工作,除非它被禁用,否则无法启用。我给变量添加了一个警报,看看它是否正确返回,bool是否正常工作,但按钮只会禁用
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;
    }
}