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>

非表示フィールド コントロールの値にアクセスして、linkbutton クリック イベントでその値をデータベースに渡すことができるようにする必要があります。以下は、私がこれまでに得た場所です。

    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 のようです。

なぜ私がこれを取得しているのか誰か教えてもらえますか? 私は何をすべきか?

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

編集:おそらくlinkbuttonにIDが必要ないかもしれませんが、わかりません。私のリンクボタンには通常IDがあります:)

于 2013-05-11T10:49:43.263 に答える
1

最近、同様の問題がありました。を探すのでSystem.Web.UI.WebControls.HiddenFieldはなく、System.Web.UI.HtmlControls.HtmlInputHidden-class, hereを探すようにしてください。

さらに、使用するのではなく、より慎重にする必要があります

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