2013-06-20 68 views
0

我的問題是我在FooterTemplate和HeaderTemplate(在datalist)中有一個按鈕,我需要禁用它們/基於一個布爾啓用它們。我知道使用ItemDataBound,但隨着頁面其餘部分的設置無法正常工作,因爲它唯一綁定的時間是初始頁面加載。訪問頁眉/頁腳模板C#中的控件#

我一度曾使用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()%>; 
    } 
} 

我試圖做到這一點在文本改變事件以及在一個selectedindexchanged事件,如果這是有用的信息。如果有其他信息要求,我會盡我所能提供。

謝謝你提供的任何幫助。

回答

1

以下代碼:

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; 
    } 
} 
+0

我實際使用getElementsByClassName方法(「ButtonStatus」),因爲有兩個按鈕,然後做一個循環,得到兩個按鈕,將在編輯我的問題,所以你可以看到它 –

+0

似乎只有一次工作的禁用它不會啓用。我給這個變量加上一個警告,看看它是否正確返回,布爾是否按照它應該的那樣工作,但這些按鈕只能禁用 –