2013-02-13 50 views
1

我有一個隱藏字段的表格:如何改變輸入的隱藏在服務器端的價值

<form id="Form1" runat="server" style="width: 100%; height: 100%; overflow: hidden"  onsubmit="return false;"> 
<div>  
<input type="hidden" runat="server" id="TrackColors" value=""/>    
<input type="hidden" runat="server" id="Relogin" value=""/> 
</div> 
</form> 

後的Page_Load()在服務器端被調用的函數:

protected void SomeFunction() 
    { 
     Dictionary<int, int> trackColors = new Dictionary<int, int>(); 
     if (!String.IsNullOrEmpty(TrackColors.Value)) 
      trackColors = ReadValues(TrackColors.Value); 

    //if value is null or empty it's assigned to a different 


     TrackColors.Attributes["value"] = FormValues(trackColors); //FormValues() return string 

    //change is visible   
    } 


    string FormValues(Dictionary<int, int> values) 
    { 
    string result = ""; 
    if (values == null || values.Count == 0) 
     return result; 

    foreach (KeyValuePair<int, int> p in values) 
     result += p.Key + "@@" + p.Value + "^^"; 
    result = result.TrimEnd('^'); 

    return result; 
} 

如果我更改了ComboBox的選定字段,則調用該函數:

<dx:ASPxTextBox ID="ColorTrackCarID" Visible="false" Text='<%# Eval("CarId") %>' /> 
        <dx:ASPxComboBox ID="ASPxComboBox1" runat="server" SelectedIndex='<%# Eval("TrackColor") %>' 
            ValueType="System.String" Width="30" ShowImageInEditBox="true" 
         ondatabinding="ASPxComboBox1_DataBinding"> 
            <ClientSideEvents SelectedIndexChanged="function (s,e) { 
            if (window.TrackColorChanged != null)TrackColorChanged(s,e); }" /> 
</dx:ASPxComboBox> 



function TrackColorChanged(s, e) { 
      var TrackColors = document.getElementById('TrackColors'); 
      if (TrackColors == null || TrackColors.value == "") 
       return values;  
      //values is always emply  
     } 

我明白表單字段的值不會通過ba ck到客戶端。問題是:如何將這些值傳回?

如果我改變在Page_Load中()服務器端的值,然後在客戶端所看到的一切,就是

protected void Page_Load(object sender, EventArgs e) 
{ 
TrackColors.Attributes["value"] = "bla-bla-bla"; 
//All changes are visible on the client-side 
} 

感謝您的關注。

+0

您是否嘗試過使用'TrackColors.Value'?此外,從FormValues(trackColors)返回的是什麼;'? **發佈該方法。** – 2013-02-13 14:04:38

+0

您可以通過發送該值 – coder 2013-02-13 14:12:02

+0

來調用您的代碼隱藏的JS/JQuery函數有什麼功能? – 2013-02-13 14:32:41

回答

3

爲了使其更容易,與對照更換您的隱藏字段:

<asp:HiddenField id="X" runat="server" /> 

,你可以直接在其上設置值:

X.Value = "XYZ"; 

這個值可以從客戶端傳遞到服務器,反之亦然,並且工作非常容易。不是說你不能使用服務器端的輸入,但是HiddenField可以爲你處理很多事情。

編輯:另外,你確定你不覆蓋的價值?如果你這樣做:

protected void Page_Load(object sender, EventArgs e) 
{ 
TrackColors.Attributes["value"] = "bla-bla-bla"; 
//All changes are visible on the client-side 
} 

這將始終將值更改爲「bla-bla-bla」。如果您在頁面加載時初始化它,您會想要將其包裝在if (!Page.IsPostback)中。

+0

它不起作用 – 2013-02-13 14:33:24

+0

上面編輯。請注意,我從來沒有這種方法失敗,使用服務器端的隱藏字段總是將值發回。它可能是代碼中其他地方的問題嗎? – 2013-02-13 15:06:18

相關問題