2013-06-11 44 views
0

我需要將下拉列表'dropCallbackReason'的'文本值'聲明爲'ValueHiddenField'ID,以便我可以將其用作JavaScript變量。使用C#聲​​明HiddenField的值和Javascript變量

我需要能夠通過C#聲明HiddenField以及通過c#聲明Javascript變量'callBackReason'以及任何想法如何通過C#做到這一點?

.cs頁面。

protected void Page_Load(object sender, EventArgs e) 
    { 
     HiddenField hiddenField = new HiddenField { ID = "ValueHiddenField", Value = "test" }; 
     theForm.Controls.Add(hiddenField); 
     string script = @"function updateCallBackReason() { 
       callBackReason = document.getElementById('<%=ValueHiddenField.ClientID %>').value; 
       return callBackReason; 
      }"; 
     this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "callBackReasonScript", script, true); 

的.aspx

<asp:label runat="server" ID="lblCallbackReason" AssociatedControlID="dropCallbackReason" CssClass="textLabel">Reason for callback:</asp:label> 
      <asp:DropDownList runat="server" ID="dropCallbackReason" onChange="updateCallBackReason" ClientIDMode="Static" > 
       <asp:ListItem Text="-- Select Reason --" Value="1"></asp:ListItem> 
       <asp:ListItem Text="Booking a Test Drive" Value="6"></asp:ListItem> 
       <asp:ListItem Text="Discussing a Purchase" Value="11"></asp:ListItem> 
       <asp:ListItem Text="Contract Hire Quotation" Value="45"></asp:ListItem> 
      </asp:DropDownList> 
+0

所以你的問題是如何通過代碼隱藏而不是聲明方式來做到這一點? – Andrei

+0

是的Andrei,抱歉如果我鬆了一口氣。 – wilsonlego

回答

1

下面是如何以編程方式添加一個HiddenField控制。需要注意的是控制不能被添加到Page.Controls直接 - 它們應放入一些容器,如ContentPlaceholderPanel

HiddenField hiddenField = new HiddenField {ID = "ValueHiddenField", Value = "test"}; 
SomePanel.Controls.Add(hiddenField); 

這裏是如何註冊腳本塊:

string script = @"function updateCallBackReason() { 
        callBackReason = document.getElementById('<%=ValueHiddenField.ClientID %>').value; 
        return callBackReason; 
       }"; 
this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "callBackReasonScript", script, true); 

好地方這是否Page_LoadPage_PreRender

+0

非常感謝。我似乎得到了'System.Web.HttpException'的編譯錯誤:無法在DataBind,Init,Load,PreRender或Unload階段修改控件集合。看看周圍的網絡,我似乎無法找到很多想法爲什麼? – wilsonlego

+0

@wilsonlego,做了一些修改以澄清答案。請參閱更新。 – Andrei

+0

謝謝,它回來了'SomePanel.Controls.Add(hiddenField)'的錯誤;'因爲SomePanel不存在?我應該使用'SomePanel'嗎?問候, – wilsonlego