1

在我的 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>

我需要访问隐藏字段控件中的值,以便可以在链接按钮单击事件上将该值传递给数据库。下面是我到目前为止的地方。

    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);

我收到一个运行时错误,因为“对象未引用到对象的实例”。该值似乎为空。

谁能告诉我为什么我会得到这个?我应该怎么办?

4

2 回答 2

2

给你的链接按钮一个 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);
}

编辑:也许链接按钮不必有一个ID,不确定。我的链接按钮通常有 id 的 :)

于 2013-05-11T10:49:43.263 回答
1

我最近有一个类似的问题。尽量不要在这里寻找System.Web.UI.WebControls.HiddenField,而是寻找System.Web.UI.HtmlControls.HtmlInputHidden-class 。

此外,您应该更加谨慎,而不是使用

System.Web.UI.HtmlControls.HtmlInputHidden hi =
listview1.FindControl("hiddenID") as ystem.Web.UI.HtmlControls.HtmlInputHidden;
if(hi != null)
...
于 2013-05-11T10:39:23.227 回答