. net Web表单传递参数为SQL Select/Where

本文关键字:SQL Select Where 参数 Web 表单 net | 更新日期: 2023-09-27 18:12:33

我正在研究连接到SQL服务器的Web Forms应用程序,我试图将数据从一个页面传递到另一个页面。具体来说,我有一个listviewprojectlist。将ProjectID值传递给FormView ProjectDetails.aspx。我试图设置SQL来捕获这个ProjectID作为其WHERE子句的参数。

我ProjectDetails

。aspx数据源定义如下:

<asp:SqlDataSource ID="ProjectDetailsSQL" 
                   runat="server" 
                  ConnectionString="<%$ ConnectionStrings:DBConnectionString %>" 
DeleteCommand="DELETE FROM [tblProject] WHERE [ProjectID] = @original_ProjectID" 
InsertCommand="INSERT INTO [tblProject] 
                          ([ProjectID], [ProjectName], [ProjectAddress], 
                           [ProjectCity], [ProjectState],[ProjectZip]) 
                    VALUES (@ProjectID, @ProjectName, @ProjectAddress, 
                            @ProjectCity, @ProjectState, @ProjectZip)" 
OldValuesParameterFormatString="original_{0}" 
SelectCommand="SELECT [ProjectID], [ProjectName], [ProjectAddress], 
                      [ProjectCity], [ProjectState], [ProjectZip]
               FROM [tblProject] WHERE ([ProjectID] = @ProjectID)" 
UpdateCommand="UPDATE [tblProject] 
               SET [ProjectName] = @ProjectName, 
                   [ProjectAddress] = @ProjectAddress, 
                   [ProjectCity] = @ProjectCity, 
                   [ProjectState] = @ProjectState, 
                   [ProjectZip] = @ProjectZip 
               WHERE [ProjectID] = @original_ProjectID">
<DeleteParameters>
    <asp:Parameter Name="original_ProjectID" Type="Int32" />
</DeleteParameters>
<InsertParameters>
    <asp:Parameter Name="ProjectID" Type="Int32" />
    <asp:Parameter Name="ProjectName" Type="String" />
    <asp:Parameter Name="ProjectAddress" Type="String" />
    <asp:Parameter Name="ProjectCity" Type="String" />
    <asp:Parameter Name="ProjectState" Type="String" />
    <asp:Parameter Name="ProjectZip" Type="String" />
</InsertParameters>
<SelectParameters>
    <asp:Parameter Name="ProjectID" Type="Int32" />
</SelectParameters>
<UpdateParameters>
    <asp:Parameter Name="ProjectName" Type="String" />
    <asp:Parameter Name="ProjectAddress" Type="String" />
    <asp:Parameter Name="ProjectCity" Type="String" />
    <asp:Parameter Name="ProjectState" Type="String" />
    <asp:Parameter Name="ProjectZip" Type="String" />
    <asp:Parameter Name="original_ProjectID" Type="Int32" />
</UpdateParameters>

我已经尝试传递数据作为路由URL (Servername/Project/12345),显式URL (Servername/ProjectDetails.aspx?12345)和定义参数(Servername/ProjectDetails.aspx?ProjectID=12345)和FormView出现空白。如果我将WHERE ([ProjectID] = @ProjectID)从SelectCommand中删除,FormView将显示表的第一个记录。

我猜问题不在于数据的传递,而在于WHERE子句捕获我试图传递的内容。是否有其他地方我需要定义@ProjectID作为我试图传递的值?

. net Web表单传递参数为SQL Select/Where

这里的问题是SqlDataSource没有参数值,它根本不知道从哪里获取参数值。

我不确定SqlDataSource可以很好地工作与url重写,猜测它取决于你如何实际设置它。但是对于你提到的后一个选项

Servername/ProjectDetails.aspx吗?ProjectID = 12345

有一个内置的支持。将参数声明为查询字符串1,它将直接从请求的查询字符串中获取:

<SelectParameters>
    <asp:QueryStringParameter Name="ProjectID" Type="Int32" QueryStringField="ProjectID" />
</SelectParameters>