1

私は基本的なデータ駆動型の ASP.NET Web フォームの設計を行っています。フォームの最初の部分は機能していますが、次に何をすればよいかわかりません。

これまでに作成したスクリーンショットをご覧ください: http://www.twitpic.com/2gnmr

マスター リストで使用する HTML 要素の種類と、その要素のどのイベント/トリガーを使用して、「この選択した項目の子レコードを取得する」シーケンスを起動するかを知る助けが必要ですか?

また、ListView はマスター リストを表示する正しい方法でもありますか? 現時点では、編集機能を提供しようとしていません。それについては後で説明します。

私のようにリストビューを手作業でコーディングするのではなく、他の ASP.NET データ コントロールを使用する必要がありますか?

各顧客名の横に実際の「選択」リンク項目を表示したくありません (間抜けに見えます)。顧客名をクリックするリンクにしたい。

したがって、以下のコードで、CustomersWithOpenOrders のリストを表示する ListView があることがわかります。しかし、これは単なる静的リストなので、会社名のラベルをクリックできるようにするにはどうすればよいでしょうか。子レコードをフェッチするためにコード ビハインドを起動するには、他に何が必要でしょうか。渡された CustomerNumber の子レコードを DataTable に取得するコード ビハインド メソッドが既にあり、それを子レコードのグリッドまたはリストビューにバインドする方法はわかっていると思いますが、渡す方法がわかりません。マスター ListView から UI フォームのメソッドへの CustomerNumber。

<asp:ListView ID="ListView1" runat="server">
    <LayoutTemplate>
      <table cellpadding="2" border="0" ID="tbl1" runat="server">
        <tr id="Tr1" runat="server" class="lvHeader">
          <th id="Th1" runat="server">Customer</th>
        </tr>
        <tr runat="server" id="itemPlaceholder" />
      </table>
    </LayoutTemplate>
    <ItemTemplate>
      <tr id="Tr2" runat="server">
        <td>
          <asp:Label ID="label2" class="FirstLine" runat="server" Text='<%# Eval("company") %>' />
          <br />
          <div class="SecondLine">
            <asp:Label ID="labelCustNo" runat="server" Text='<%# Eval("custno") %>'/>
            <asp:Label runat="server" Text='Ph: '></asp:Label>
            <asp:Label ID="label3" runat="server" Text='<% # Eval("phone") %>' />
          </div>
        </td>
      </tr>
    </ItemTemplate>
</asp:ListView>
4

1 に答える 1

2

個人的には、ListView が私のニーズを解決できないケースは見つかりませんでした。顧客選択スタイル リストを作成する場合は、リンク ボタンをバインドに使用できます。

<asp:ListView runat="server" id="CustomersList" ItemCommand="CustomersList_ItemCommand">
  <LayoutTemplate>
    <table cellpadding="2" border="0" ID="tbl1" runat="server">
      <tr id="Tr1" runat="server" class="lvHeader">
        <th id="Th1" runat="server">Customer</th>
      </tr>
      <tr runat="server" id="itemPlaceholder" />
    </table>
  </LayoutTemplate>
  <ItemTemplate>
    <tr id="Tr2" runat="server">
      <td>
        <asp:LinkButton ID="link1" class="FirstLine" runat="server" Text='<%# Eval("company") %>' CommandName="Select" />
        <br />
        <div class="SecondLine">
          <asp:Label ID="labelCustNo" runat="server" Text='<%# Eval("custno") %>'/>
          <asp:Label runat="server" Text='Ph: '></asp:Label>
          <asp:Label ID="label3" runat="server" Text='<% # Eval("phone") %>' />
        </div>
      </td>
    </tr>
  </ItemTemplate>
</asp:ListView>

<asp:ListView runat="server" ID="OrderList">
  <!-- Child Rows implementation -->
</asp:ListView>

次に、イベントを ListView.ItemCommand にバインドする必要があります。

protected void CustomersList_ItemCommand(object sender, ListViewCommandEventArgs e)
{
  if (e.CommandName = "Select")
  {
    if (e.Item.ItemType != ListViewItemType.DataItem) return;

    var dataItem = e.Item as ListViewDataItem;
    if (dataItem == null) return;

    var customer = dataItem.DataItem as Customer;
    if (customer == null) return;

    this.OrdersList.DataSource = GetChildRecords(customer.ID);
    this.OrdersList.DataBind();
  }
}
于 2009-03-26T16:04:50.437 に答える