我正在处理连接到SQL Server的Web窗体应用程序,并且试图将数据从一页传递到另一页。具体来说,我有一个ListView ProjectList.aspx,它将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
有一个内置的支持。将参数声明为查询字符串一,它将直接从请求的查询字符串中获取:
<SelectParameters>
<asp:QueryStringParameter Name="ProjectID" Type="Int32" QueryStringField="ProjectID" />
</SelectParameters>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句