在我的aspx页面中,我有,
<asp:ListView ID="listview1" runat="server" DataSourceID="dtasrc_load">
<ItemTemplate>
<h4>
<asp:Label ID="lbl_titlename" runat="server" Text='<%#Eval("abt_vch_Title") %>'></asp:Label>
</h4>
<asp:LinkButton runat="server" OnClick="Content_Load" class="btn">Edit</asp:LinkButton>
<asp:HiddenField ID="hiddenID" runat="server" Value='<%#Eval("abt_int_ID") %>' />
</ItemTemplate>
</asp:ListView>
我需要访问隐藏字段控件中的值,以便我可以将该值传递给linkbutton click事件上的数据库。以下是我到目前为止所处的位置。
protected void Content_Load(object sender, EventArgs e)
{
HiddenField hd = new HiddenField();
HiddenField myhiddenfield = new HiddenField();
myhiddenfield = (HiddenField)listview1.FindControl("hiddenID");
int myID = Convert.ToInt32(myhiddenfield.Value);
我得到一个运行时错误,因为“对象没有引用对象的实例”。该值似乎为null。
有谁能告诉我为什么我会这样?我该怎么办?
答案 0 :(得分:2)
给你的linkbutton一个id
<asp:LinkButton runat="server" OnClick="Content_Load" class="btn"
id="editlinkbutton">Edit</asp:LinkButton>
并将您的代码更改为此
protected void Content_Load(object sender, EventArgs e)
{
LinkButton editlinkbutton = sender as LinkButton;
HiddenField myhiddenfield = editlinkbutton.NamingContainer.FindControl("hiddenID") as HiddenField;
int myID = Convert.ToInt32(myhiddenfield.Value);
}
编辑:也许linkbutton不必有id,不确定。我的链接按钮通常有id:)
答案 1 :(得分:1)
我最近有类似的问题。尽量不要查找System.Web.UI.WebControls.HiddenField
,而是查找System.Web.UI.HtmlControls.HtmlInputHidden
- 类,here。
此外,您应该更加谨慎,而不是使用
System.Web.UI.HtmlControls.HtmlInputHidden hi =
listview1.FindControl("hiddenID") as ystem.Web.UI.HtmlControls.HtmlInputHidden;
if(hi != null)
...