. 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作为我试图传递的值?
这里的问题是SqlDataSource没有参数值,它根本不知道从哪里获取参数值。
我不确定SqlDataSource可以很好地工作与url重写,猜测它取决于你如何实际设置它。但是对于你提到的后一个选项
Servername/ProjectDetails.aspx吗?ProjectID = 12345
有一个内置的支持。将参数声明为查询字符串1,它将直接从请求的查询字符串中获取:
<SelectParameters>
<asp:QueryStringParameter Name="ProjectID" Type="Int32" QueryStringField="ProjectID" />
</SelectParameters>