我用asp.net2.0查询一个表
在SqlDataSource1的SelectQuery输入了查询语句(Select * from TableName)绑定到dataView上
然后它的排序和翻页都没有问题
但是我现在需要查询所以我
        Dim pSqlStr As String = "SELECT FROM TableName where firstname like 'Bing%'"
        SqlDataSource1.SelectCommand = pSqlStr
        SqlDataSource1.Select(System.Web.UI.DataSourceSelectArguments.Empty)
        GridView1.DataSourceID = "SqlDataSource1"
        GridView1.DataBind() 查询结果正确,但当排序和翻译的时候,以前被滤掉的纪录又出来的
我该怎么办呀

解决方案 »

  1.   

    这是因为sqlDataSource控件的SelectCommand属性并没有纳入ViewState机制,(由于安全性的考虑),也就是说,SelecteCommand在postback之后又恢复到初始状态了
      

  2.   

    解决的方法1:
    protected void SqlDataSource1_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
        {
          //在这里更改SelectCommand属性
        }
      

  3.   

    解决方法2:
    用一个不变的初始sql语句,变化的只是其参数
    例如楼主的sqldatsource,可以这样:
    <asp:SqlDataSource ID="SqlDataSource1" runat="server"  SelectCommand="SELECT * FROM [TableName] WHERE ([firstname] LIKE '' + ? + '%')"   ........>
            <SelectParameters>
                <asp:ControlParameter ControlID="TextBox1" DefaultValue="%" Name="firstname" PropertyName="Text"
                    Type="String" />
            </SelectParameters>
        </asp:SqlDataSource>
      

  4.   

    请问高手,我使用的是button如何触发SqlDataSource1_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
      

  5.   

    不需要特意触发SqlDataSource1的Selecting事件,只要你调用了GridView1.DataBind(),系统就自动调用SqlDataSource的Select方法,而此过程中必然会触发 Selecting事件
      

  6.   

    可是
    我把
    Dim pSqlStr As String = "SELECT FROM TableName where firstname like 'Bing%'"
            SqlDataSource1.SelectCommand = pSqlStr
            SqlDataSource1.Select(System.Web.UI.DataSourceSelectArguments.Empty)
            GridView1.DataSourceID = "SqlDataSource1"
            GridView1.DataBind() 
    移到
    SqlDataSource1_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
    中后
    SqlDataSource1.Select(System.Web.UI.DataSourceSelectArguments.Empty)
    会出错
    请您详解,我是一个初学者
    谢谢
      

  7.   

    SqlDataSource1_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
    里面只要下面两句就行了:
    Dim pSqlStr As String = "SELECT FROM TableName where firstname like 'Bing%'"
            SqlDataSource1.SelectCommand = pSqlStr
      

  8.   

    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
            GridView1.DataBind()
        End Sub  Protected Sub SqlDataSource1_Selecting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.SqlDataSourceSelectingEventArgs) Handles SqlDataSource1.Selecting
            Try
                Dim pSqlStr As String = "SELECT UserTest.* FROM UserTest where firstname like 'Bing%'"
                SqlDataSource1.SelectCommand = pSqlStr
                        Catch ex As Exception        End Try
         End Sub
    我点完button 后没有反应呀,谢谢
      

  9.   

    我在button 中有加了
    GridView1.DataSourceID = "SqlDataSource1"
    这样的话,翻页没有问题了
    但排序还是原来的样子