ASP.NET C#嵌套控件访问

时间:2013-02-08 00:18:13

标签: c# asp.net

我有类似的东西

<asp:ListView ID="lv" runat="server">
  <LayoutTemplate>
    <asp:Literal ID="litControlTitle" runat="server" />
      <label id="test" runat="server">dw</label>
    <asp:PlaceHolder ID="itemPlaceHolder" runat="server" />
  </LayoutTemplate>
  <ItemTemplate>
  </ItemTemplate>
</asp:ListView>

有人可以告诉我,我应该如何使用C#代码更改标签文字? 对我来说主要的问题是如何从c#代码访问嵌套控件(标签,文字)?

编辑:

<SelectedItemTemplate>

                    <asp:HiddenField ID="NumberEdit" runat="server"
                        Value='<%# Bind("numbers") %>' />

                    <label for="NameEdit">Name:</label>
                    <asp:TextBox ID="NameEdit" Width="160px" runat="server" AutoPostBack="true" OnTextChanged="NameEdit_TextChanged"
                        Text='<%# Bind("Name") %>'  />
                    <br />

                                    <label for="ShortcutEdit">Shortcut:</label>
                    <asp:TextBox ID="ShortcutEdit" Width="80px" runat="server"
                        Text='<%# Bind("Shortcut") %>' />
                    <br />

我想在用户更改Name(Shortcut = NameEdit的第一个字母)时自动生成快捷方式文本?你能解释一下我该怎么办? -

3 个答案:

答案 0 :(得分:2)

您可能希望拥有一个ItemDataBound事件处理程序来访问listview中该特定项的控件。我链接的页面上的示例可以帮助您。

答案 1 :(得分:1)

首先,您需要使用此ListView控件绑定的数据源,例如SqlDataSource或您需要的任何其他允许类型:

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
                ConnectionString="<%$ ConnectionStrings:YourConnectionString %>" 
                SelectCommand="SELECT [Title], [id] FROM [Articles]"></asp:SqlDataSource>

    <asp:ListView ID="lv" runat="server" DataSourceID="SqlDataSource1" >
        // rest of the code
    </asp:ListView>

第二件事是,只有在要显示的数据时才会呈现来自LayoutTemplate模板的控件。因此,如果您有数据源,但它是空的,则不会应用此模板。但是,当数据源中没有任何内容可供显示时,您可以使用EmptyDataTemplate显示信息。

然后,当您已经定义了数据源并绑定到ListView并且会显示数据时,将会呈现LayoutTemplate。然后,您可以使用FindControl的{​​{1}}方法。至于获得这个文字的例子:

ListView

它为您返回null,因为您没有要显示的数据,因此根本不会呈现控件。

答案 2 :(得分:0)

((Label)ListView1.FindControl("test")).Text = "Hello!";