ASP.NET trouver de contrôle par id

Je suis en train de faire un site web simple à l'aide de asp.net et je vais avoir des problèmes à trouver mon ou les objets par id dans le code behind en c#. J'ai quelque chose comme ceci:

<asp:ListView ID="InternamentosListView" runat="server"
            DataSourceID="InternamentosBD">
        <LayoutTemplate>
            <table id="camas">

                    <asp:PlaceHolder runat="server" ID="TablePlaceHolder"></asp:PlaceHolder>

            </table>

        </LayoutTemplate>

le reste est sans importance, puis-je l'utiliser dans le code-behind:

Table table = (Table)FindControl("camas");

j'ai aussi essayé:

Table table = (Table)camas;

et

Control table= (Table)FindControl("camas");

et chacun de ces lignes me donne la valeur Null. suis-je en train de faire quelque chose de mal ?

EDIT: a Partir de vos réponses j'ai fait ceci:

<LayoutTemplate>

            <table id="camas" runat="server">


            </table>

        </LayoutTemplate>

et essayé tous les points énoncés ci-dessus. même résultat.

EDIT2: Tout le Code:

C#

 protected void Page_Load(object sender, EventArgs e)
    {

        Table table = (Table)FindControl("camas");
        HiddenField NCamasHF = (HiddenField)FindControl("NCamas");
        int NCamas = Convert.ToInt32(NCamasHF);
        HiddenField NColunasHF = (HiddenField)FindControl("NColunas");
        HiddenField CorMasc = (HiddenField)FindControl("CorMasc");
        HiddenField CorFem = (HiddenField)FindControl("CorFem");
        int NColunas = Convert.ToInt32(NColunasHF);
        TableRow Firstrow = new TableRow();
        table.Rows.Add(Firstrow);
        for (int i = 1; i <= NCamas; i++)
        {
            if (i % NColunas == 0)
            {
                TableRow row = new TableRow();
                table.Rows.Add(row);
                TableCell cell = new TableCell();
                cell.BackColor = System.Drawing.Color.LightGreen;
                cell.CssClass = "celula";
                row.Cells.Add(cell);
            }
            else
            {
                TableCell cell = new TableCell();
                cell.BackColor = System.Drawing.Color.LightGreen;
                cell.CssClass = "celula";
                Firstrow.Cells.Add(cell);
            }
        }
    }

asp.net

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">

     <asp:SqlDataSource
        ID="ParametrosBD"
        ConnectionString ="<%$ ConnectionStrings:principal %>"
        ProviderName = "System.Data.SqlClient"
        SelectCommand = "SELECT par_Id, par_NCamas, par_NColunas, par_CorMasculino, par_CorFeminino FROM Parametros WHERE par_Id=1"
        runat="server">
       </asp:SqlDataSource>
    <asp:ListView ID="InternamentosListView" runat="server"
            DataSourceID="InternamentosBD">
        <LayoutTemplate>

            <table id="camas" runat="server">


            </table>

        </LayoutTemplate>
        <ItemTemplate>
            <asp:HiddenField ID="NCamas" runat="server" Value='<%# Bind("par_NCamas") %>' />
            <asp:HiddenField ID="NColunas" runat="server" Value='<%# Bind("par_NColunas") %>' />
            <asp:HiddenField ID="CorMasc" runat="server" Value='<%# Bind("par_CorMasculino") %>' />
            <asp:HiddenField ID="CorFem" runat="server" Value='<%# Bind("par_CorFeminino") %>' />
            <tr id="cama"></tr>
            </ItemTemplate>
    </asp:ListView>

</asp:Content>
  • j'ai utilisé runat="server" déjà et encore je obtenir de l'null. J'utilise cette fincControl avec les balises ASP trop (Qui s'exécutent dans le serveur) et je reçois null.
  • n'ai pas fait cela dans un certain temps, essayez d'ajouter un name="camas" avec l'id
  • le nom n'est pas une propriété valide ici. qui est venu à mon esprit aussi.
InformationsquelleAutor Pedro Costa | 2015-02-04