如何在网格视图中获取隐藏字段的值?

时间:2012-03-28 20:21:51

标签: c# asp.net

网格视图中隐藏字段的订单号为7.

当我点击按钮时

string sValue = ((HiddenField)GridView1.SelectedRow.Cells[7].FindControl("HiddenField1")).Value; 

给出错误,即“对象引用未设置为对象的实例。”

          <asp:TemplateField>
            <ItemTemplate> 

                <asp:HiddenField ID="HiddenField1" runat="server" 
                    Value='<%#Eval("RSS_ID")%>'/>

            </ItemTemplate>
          </asp:TemplateField>

c#side

else if (e.CommandName == "View")
{
    string sValue = ((HiddenField)GridView1.SelectedRow.Cells[7].FindControl("HiddenField1")).Value;                   
}

3 个答案:

答案 0 :(得分:6)

你试过这个吗?

HiddenField field = (HiddenField)GridView.Rows[GridView.SelectedIndex].FindControl("HiddenField1");

如果是,那这个怎么样?

HiddenField field = GridView1.Rows[e.RowIndex].FindControl("HiddenField1") as HiddenField;

这是你可以尝试的另一个,

if(e.Row.RowType == DataControlRowType.DataRow)
{    
     HiddenField field = e.Row.FindControl("HiddenField1") as HiddenField;
}

希望这有助于......干杯

答案 1 :(得分:2)

删除细胞部分

如果您有所选行:

string sValue = ((HiddenField)GridView1.SelectedRow.FindControl("HiddenField1")).Value;

如果你有来自命令参数的e.rowIndex:

string sValue = ((HiddenField)GridView1.Rows[e.rowIndex].FindControl("HiddenField1")).Value;

答案 2 :(得分:1)

当您实际选择行时,即使我没有看到代码,您也试图访问SelectedRow。我的猜测是你只使用了一些自定义命令按钮,它并没有真正设置所选行。修复它,它应该工作。

如果您不能/不想,您需要自己编写一些方法来查找所需的行,然后应用FindControl方法访问隐藏的字段,获取值...

或尝试发布更完整的源代码....