0

グリッドビューがあるaspxページがあり、このグリッドビュー内にデータリストを追加したので、各行にデータリストが必要です。基本的に行には画像が含まれており、データリストには画像に関する特定の詳細を表示したい、たとえば、トラックの写真とデータリストに価格、年などを表示したい...このデータはすべてデータベーステーブルにあります。

テーブル インベントリの設計:

Image,
Make,
Model,
Price,
Year, 
ID--primary key

この時点で、グリッドビューに画像を表示していますが、データリストには、テーブル内のすべての行がグリッドのすべての行に表示されています。現在の行の画像を説明するデータのみを表示したい. たとえば、データリストの最初の行は ID = "15" のデータのみを表示し、2 行目は ID = "16" のデータのみを表示する必要があります。

データリストを埋める SQLDataSource の SelectCommand で、「WHERE ID = @ID」パラメーターを渡してコードビハインド ページから取得しようとしているので、データを操作して、画像に対応するデータのみを表示し、画像に対応するデータのみを表示できます。各行のすべてのデータを繰り返します。

<asp:GridView ID="GridView1" runat="server" 
  <asp:SqlDataSource ID="SqlDataSource2" runat="server" 
                 SelectCommand="SELECT [ID], [Make], [Model], [Year], [Price] FROM [Inventory] 
                 WHERE ID = @ID" OnLoad = "SqlDataSource1_Load" 
                 OldValuesParameterFormatString="original_{0}" 
                 ConnectionString="<%$ ConnectionStrings:testConnectionString %>">
</asp:SqlDataSource>

これは私が望むものの一種です、コードビハインド

 public partial class Inventory : System.Web.UI.Page
   {
     protected System.Web.UI.WebControls.DataList DataList1;
     protected void Page_Load(object sender, EventArgs e)
       {
        }

     public void SqlDataSource1_Load(object sender, EventArgs e)
      {
          SqlDataSource1.SelectParameters.Add(new Parameter("ID", this would be where my ID 
                   should = the id of the image);
      }
  }
4

1 に答える 1

0

あなたが取っているアプローチは、グリッドビューの行ごとにデータベーストリップを引き起こします。より良い解決策は、1 回の旅行ですべての関連データを取得してから、子データ リストをフィルター処理されたアイテムにバインドすることです。たとえば、2 つのテーブルを返すストアド プロシージャ (または 2 つのクエリを含むバッチ) へのデータベース呼び出しを行います。最初は、グリッド ビューにバインドできる画像と ID を含み、2 つ目のテーブルには、すべての ID の他の情報が含まれます。最初のテーブル。これで、必要な ID をフィルター処理する DataView を使用してデータ リストをバインドできます。

データ バインド コントロールのネストに関するさまざまな例については、この MSDN の記事を参照してください - http://msdn.microsoft.com/en-us/library/aa478959.aspx

別の注意として、データリスト情報 (メーカー、モデル、価格、年) に特定の id/image の複数の値があるかどうかもわかりません。そうでない場合は、data-list を使用する必要はまったくありませんが、目的の垂直レイアウトのテンプレート フィールドを使用してカスタム テンプレートを使用します。

于 2012-12-27T05:54:44.007 に答える