【问题标题】:Creating a Separate Detail View Page in ASP.net在 ASP.net 中创建单独的详细视图页面
【发布时间】:2014-02-22 22:00:02
【问题描述】:

好的,所以我创建了一个包含 2 个连接下拉列表的表单。我有一个重定向到另一个页面的按钮。这个当前是空白的,但我尝试向其添加详细视图,但是,当我尝试将其连接到数据源时,它只显示第一个列名和 abc。

我需要知道如何将它连接到我的数据源,这将创建 4 行以及这些行的相应信息。在这种情况下,它类似于第一页上所选项目的数量、类别、产品名称和描述。

非常感谢任何帮助。

更新

我仍然无法正常工作。

这是第一页的截图。

我对这个页面的说明很简单......

在第一个屏幕上,用户选择一个类别,然后从所选类别中选择一个产品。 Category 和 Product 控件是使用以下过程填充的:所以我使用各自的过程设置了这两个控件,它们工作正常。

订单详情按钮只是重定向到订单详情页面,但我不确定是否需要做任何事情来保存选择。

但是,这是我为这 3 个按钮编写的代码。

<div style="height: 182px">
Category: <asp:DropDownList ID="ddlCategory"
runat="server" DataSourceID="SqlDataSource1" DataTextField="CategoryName"     

DataValueField="CategoryId" AutoPostBack="True"/>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$  
ConnectionStrings:DeveloperInterviewConnectionString %>" 
SelectCommand="CategoryListing" SelectCommandType="StoredProcedure">    
</asp:SqlDataSource>
        <br/>

Product: <asp:DropDownList ID="ddlProduct"
runat="server" DataSourceID="SqlDataSource2" DataTextField="ProductName"   

DataValueField="ProductId"/>
<asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ 

ConnectionStrings:DeveloperInterviewConnectionString %>"  
SelectCommand="CategoryProducts" SelectCommandType="StoredProcedure">
            <SelectParameters>
                <asp:ControlParameter ControlID="ddlCategory" Name="CategoryId" PropertyName="SelectedValue" Type="Int32" />
            </SelectParameters>
        </asp:SqlDataSource>

<input type="button" value="Order Details"
 onClick="location.href = 'OrderDetails.aspx';">

所以我是否必须做任何事情来设置数据从一种形式转到下一种形式,但我仍然无法使视图正常运行。

【问题讨论】:

  • 您是在问如何将参数从第一页传递到第二页?可以发一些代码吗?
  • 我不完全确定。我要做的就是将 2 个下拉菜单设置为 2 个不同的程序。如第一个下拉设置为类别并从类别列表过程中提取数据。第二个下拉菜单根据所选类别提供项目名称。那些工作正常。我创建了一个指向新页面的“订单详细信息”按钮,该页面应该使用 ProductDetail 过程提取所选项目的数据。毕业后我没有接触过asp.net,虽然在页面上拖了一个详细信息视图,并设置为datasouce就可以了。它没有。
  • 我目前唯一的代码是与第一页相关联的,它是各自的按钮。
  • 秒页面的存储过程中有什么?您是否返回了所有需要的列?
  • 它不会让我发布它。

标签: asp.net


【解决方案1】:

好的,所以我尝试将您的存储过程链接到详细信息视图,但并没有走得太远。我认为问题在于输出参数。

尝试将存储过程修改为以下内容:

CREATE PROCEDURE [dbo].[ProductDetails]
@ProductId INT
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

SELECT
ProductName,
ProductDescription,
QuantityInStock

from Product
where productid = @ProductId

END

GO

将数据源指向该 Sproc,连接 ProductID 参数,然后您就应该设置好了。

更新:添加我的 asp.net 代码

 <asp:DetailsView ID="DetailsView1" runat="server" Height="50px" Width="125px" AutoGenerateRows="False" DataSourceID="SqlDataSource1">
            <Fields>
                <asp:BoundField DataField="ProductName" HeaderText="ProductName" SortExpression="ProductName" />
                <asp:BoundField DataField="ProductDescription" HeaderText="ProductDescription" SortExpression="ProductDescription" />
                <asp:BoundField DataField="QuantityInStock" HeaderText="QuantityInStock" SortExpression="QuantityInStock" />
            </Fields>
        </asp:DetailsView>
        <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:DemoDBConnectionString %>" SelectCommand="ProductDetails" SelectCommandType="StoredProcedure">
            <SelectParameters>
                <asp:Parameter DefaultValue="1" Name="ProductId" Type="Int32" />
            </SelectParameters>
        </asp:SqlDataSource>

【讨论】:

  • 我还是不知所措。我设置了详细视图,进行了这些更改。我走到最后,它说在我的选择语句中找到了多个参数,并设置它们的值。对于我去控制之前的下拉菜单,然后选择相关的控制值。如果我在这里这样做,则只有 CategoryName 会在下一列中显示值 abc。
  • 用我的 detailsview 代码更新了我的答案。我最好的猜测是您没有修改存储过程中的参数。尝试删除网格并使用新数据源重新开始。
  • 我仍在尝试,但无法得到它我更新了原始消息以反映更改。
猜你喜欢
  • 2020-11-26
  • 1970-01-01
  • 2012-10-04
  • 2020-10-30
  • 2018-12-17
  • 1970-01-01
  • 1970-01-01
  • 2022-01-22
  • 2021-07-04
相关资源
最近更新 更多