日期:2014-05-18  浏览次数:20533 次

sqldatasource的问题
<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
  ConnectionString="<%$ ConnectionStrings:sqltestConnectionString %>" 
  SelectCommand="SELECT * FROM [stuinfo] where stuname=@stuname" DataSourceMode="DataSet">
  <SelectParameters>
  <asp:QueryStringParameter QueryStringField="ID" Name="stuname" Type="String"/>
  </SelectParameters>
   
  </asp:SqlDataSource>
在上面的代码中,因为@stuname是占位符,但是这个@stuname的值在什么地方赋值啊?
不然不就成了Select * from stuinfo where stuname=;了吗?

------解决方案--------------------
很少用这个控件,如果没弄错的话,QueryStringField应该是别的页面传递过来的参数

也就是后台经常获取的Request.QueryString["stuname"].ToString()

这个参数会自动赋值给="SELECT * FROM [stuinfo] where stuname=@stuname

里面的@stuname
------解决方案--------------------
看一下下面的例子:
<asp:SqlDataSource ID="sourceEmployees" runat="server" ProviderName="System.Data.SqlClient"
ConnectionString="<%$ ConnectionStrings:Northwind %>"
SelectCommand="SELECT EmployeeID, FirstName, LastName,Title, City FROM Employees WHERE City=@City">
 <SelectParameters>
<asp:ControlParameter ControlID="lstCities" Name="City" PropertyName="SelectedValue" />
</SelectParameters>
</asp:SqlDataSource>
------解决方案--------------------
我的例子中的参数是来自于页面控件stCities中所选中的值。这里就出现了关于SelectParameters的几种类型。详细内容查阅MSDN.
------解决方案--------------------
主要是这个<SelectParameters>中的<asp:QueryStringParameter>控件,没有<SelectParameters>将无法显示。
<asp:QueryStringParameter>控件的Name属性: 设置sql/存储过程参数;
QueryStringField属性: 获取或设置该参数绑定到的查询字符串字段的名称
如何触发?
要在该页面运行后,从QueryString中获取数据,QueryString值作为参数传递给存储过程/sql命令,浏览器地址栏中自行手动添加查询字符串"?ID=N"。