1

我有类似的东西

<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 />

并且我想在用户更改名称时自动生成快捷方式文本(快捷方式 = 来自 NameEdit 的 2 个首字母)?你能解释一下,我该怎么做?——</p>

4

3 回答 3

2

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

于 2013-02-08T00:28:40.110 回答
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使用ListView. 例如获取这个文字:

Literal l = (Literal)lv.FindControl("litControlTitle");

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

于 2013-02-08T00:29:26.440 回答
0
((Label)ListView1.FindControl("test")).Text = "Hello!";
于 2013-02-08T00:33:40.573 回答