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 に答える