2013-02-13 41 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

相关问题