1

私は一種のasp.net初心者で、目に見える属性を動的に設定しようとしていますが、コードビハインドの「TestLinkBox」にも「TestLink」IDにもアクセスできません。私はソリューションを再構築し、designer.cs ファイルを削除して再作成しようとしましたが、コード ビハインドでわかるように、stackOverflow で見つけたいくつかのソリューションを試しましたが、常に「オブジェクト参照がインスタンスに設定されていません。オブジェクト。」エラー。私は何を間違っていますか?

ASP.NET コードの一部

<%@ Page Title="" Language="C#" MasterPageFile="~/Public/Main.Master"
AutoEventWireup="true" CodeBehind="SpecifikacijaDetails.aspx.cs" Inherits="web.Public.SpecifikacijaDetails"
%>
    <asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server"></asp:Content>
    <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
        <mc:VijestiTraka ID="vijestitraka" runat="server"></mc:VijestiTraka>
        <div class="middle_content_box">
            <asp:ListView ID="ListView1" runat="server" DataKeyNames="SpecifikacijaID"
            DataSourceID="SqlDataSource1">
                <AlternatingItemTemplate>
                    <div class="details_title_box">
                        <p class="title"><strong><%# Eval("Brand") %></strong> 
                            <%# Eval( "Model") %>
                        </p>
                    </div>
                    <div class="left_column">
                        <div class="pregled_modela_slika margb30">
                            <img src='<%# Eval("SlikaMobitela") %>' />
                        </div>
                        <div id="TestLinkBox" class="testLink" runat="server" visible="false">
                            <asp:HyperLink runat="server" ID="TestLink" NavigateUrl='<%#"~/Public/TestSpecifikacije.aspx?SpecifikacijaID=" + Eval("SpecifikacijaID")%>'
                            Text="Pogledajte kompletan test"></asp:HyperLink>
                        </div>

コードビハインド

using (MobBL temp = new MobBL())
{
    if (temp.ProvjeriImalTest(Int32.Parse(Request.QueryString["SpecifikacijaID"])) > 0)
    {

        //ListView1.FindControl("link_za_test").Visible = true;

        //HtmlControl htmlDivControl = (HtmlControl)Page.FindControl("link_za_tet");
        //htmlDivControl.Visible = true;
     }
}
4

1 に答える 1

1

コード ビハインドでアクセスしようとしているコントロールは、アイテム テンプレート内にあります。このため、これらは実際にはフォーム上にないため、IntelliSense 経由でアクセスすることはできません。親コントロール (ListView1) がバインドされたときに追加されます。

リストビュー コントロールのアイテム データバインド イベントをサブスクライブします。そこでは、リストビュー内の各項目の子コントロールにアクセスできます。このようなものはあなたにコントロールを与えるでしょう:

e.Item.FindControl("TestLinkBox");
于 2012-09-02T09:17:15.790 に答える