网格视图中隐藏字段的订单号为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;
}
答案 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方法访问隐藏的字段,获取值...
或尝试发布更完整的源代码....