在Code Behind中访问动态创建的HiddenField值

时间:2013-11-06 22:44:30

标签: c# javascript asp.net

我在GridView的HiddenField事件中创建了OnRowDataBound

var hF1 = new HiddenField();
e.Row.Cells[10].Controls.Add(hF1);

在JavaScript中,我从模态中返回一个值,并为该特定行的HiddenField设置值,“hiddenField”是HiddenField的ClientID。

document.getElementById(hiddenField).value = settings;

现在,我有一个Button.OnClick事件,我需要捕获该数据以便进一步处理,但我无法确定如何检索特定行的数据。

foreach (SPGridViewRow dataRow in gvItems.Rows)
{
    if (dataRow.RowType != DataControlRowType.DataRow) continue;
    var mySettings = dataRow.... ?

我如何捕获该值?行的HiddenField控件中的每个值对于该行都是唯一的。我也对每行中保存在此字段中的临时数据的替代存储开放,请记住,这些数据是从JavaScript事件返回的。

1 个答案:

答案 0 :(得分:2)

不是在后面的代码中创建隐藏字段,而是将其设置为模板列,如下所示:

<asp:TemplateField>
   <ItemTemplate>
      <asp:HiddenField ID="myHiddenFieldID" runat="server" 
             Value='<%# Eval("SomeJSCLientID") %>' />
</ItemTemplate>

但这可能没有必要,你可以通过这样做找到你隐藏的控件:

foreach (GridViewRow row in grid.Rows)
{
   if (((HiddenField)row.FindControl("myHiddenFieldID")).Value)
   {
    //do your thing          
   }            
}