0

我有一个aspx页面,其中有一个gridview,在这个gridview中我添加了一个datalist,所以对于每一行我想要一个datalist,基本上该行包含一个图像,并且在datalist中我想显示有关图片的某些详细信息,例如,一张卡车的照片,我想在数据列表中显示价格、年份等……所有这些数据都在数据库表中。

表库存设计:

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

此时我在gridview中显示图像,但datalist显示网格每一行的表中的所有行我想要的只是显示描述当前行图像的数据. 例如,第一行应该只显示 ID = "15" 的数据列表中的数据,第二行 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

您采用的方法将导致每个网格视图行的数据库之旅。更好的解决方案是在一次行程中获取所有相关数据,然后将子数据列表与过滤后的项目绑定。例如,对将返回两个表的存储过程(或具有两个查询的批处理)进行数据库调用 - 第一个带有可以绑定到网格视图的图像和 id,而第二个表将包含来自所有 id 的其他信息第一张桌子。现在,您可以将数据列表与过滤所需 id 的 DataView 绑定。

有关嵌套数据绑定控件的各种示例,请参阅此 MSDN 文章 - http://msdn.microsoft.com/en-us/library/aa478959.aspx

另一方面,我也不确定数据列表信息(品牌、型号、价格、年份)是否具有给定 ID/图像的多个值。如果不是这种情况,那么您根本不需要使用数据列表,而是使用使用模板字段的自定义模板来实现您想要实现的垂直布局。

于 2012-12-27T05:54:44.007 回答