在代码隐藏中的列表视图中获取动态绑定的隐藏字段值

时间:2013-05-11 10:33:10

标签: c# asp.net hiddenfield

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

有谁能告诉我为什么我会这样?我该怎么办?

2 个答案:

答案 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)
...