我为一个GridView帮定了一个数据源 其实我想做的是查询 在查询的时候提供两种查询的方法 
模糊和精确 请高手指教SqlDataSource这样动态的改变SqlDataSource1.SelectCommand
我的代码是下面这样的 但是编译就报错  不知道该怎么写 
<asp:GridView ID="GridView1" runat="server" DataSourceid="SqlDataSource1">
                </asp:GridView><asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:wust91Connection2000 %>" 
  
    <SelectParameters>
                <asp:ControlParameter ControlID="TextBox1" Name="Major_Name" PropertyName="Text"
            Type="String" />
             </SelectParameters>
</<asp:SqlDataSource > Protected Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button2.Click
                If haoj.Checked = True Then
            SqlDataSource1.selectCommand = "SELECT [Stu_ID], [Stu_Name], [Gender_Name], [Major_Name], [Degree_Name], [Incoming_ID] FROM [V_searchstu] WHERE ([Stu_Name] = @Major_Name)"
        Else
            SqlDataSource1.selectCommand = "SELECT [Stu_ID], [Gender_Name], [Stu_Name], [Major_Name], [Degree_Name], [Incoming_ID] FROM [V_searchstu] WHERE ([Stu_Name] LIKE '%' + @Major_Name + '%')"
        End If
        SqlDataSource1.select()  是这里错了
        GridView1.DataBind()
            End Sub

解决方案 »

  1.   

    推荐一个ASP.NET群,来共同学习20646750
      

  2.   

    设置两个sqldatasource,依据条件将其中的一个指定给gridview做为数据源试一下.
      

  3.   

    那我要是要该很多次呢 那我不是要N多个sqldatasource了 不觉得很耗资源吗
      

  4.   

    一个就够了...SqlDataSource1.select()  是这里错了
            GridView1.DataBind() 这些都可以不要的.....
      

  5.   

    只要设置了selectCommand 的值就行了,记录会自动出来的。
    SQL语句用LIKE的话,不知道会不会出错?
      

  6.   

    你应该是前面数据源控件声明时的问题,怎么只有个参数声明,没有初始select语句,这样地话,会抱错:“Select”方法没有采用“0”个参数的重载”。加上类似下面的“SelectCommand”<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:wust91Connection2000 %>"   SelectCommand="SELECT [Stu_ID], [Stu_Name], [Gender_Name], [Major_Name], [Degree_Name], [Incoming_ID] FROM [V_searchstu] WHERE ([Stu_Name] = @Major_Name)">    <SelectParameters>
                    <asp:ControlParameter ControlID="TextBox1" Name="Major_Name" PropertyName="Text"
                Type="String" />
                 </SelectParameters>
    </asp:SqlDataSource >因为你的2个sql语句参数一样,如果不一样情况更复杂些,参见:http://blog.csdn.net/quou2002/archive/2006/04/05/651560.aspx
    ==== 
    ~~~~ 我的Blog:http://blog.csdn.net/quou2002 
      

  7.   

    因为你的2个sql语句参数一样,如果不一样情况更复杂些,参见:http://blog.csdn.net/quou2002/archive/2006/04/05/651560.aspx  
     
    我已看过了 但是没有什么列子 和代码  有谁知道的把代码铁出来好吗
      

  8.   

    谢谢 各为了  我做出来了  为了让大家可以看到结果 我把代码铁出了供大家参考
    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1">
                <Columns>
                    <asp:BoundField DataField="Stu_Name" HeaderText="Stu_Name" SortExpression="Stu_Name" />
                    <asp:BoundField DataField="Gender_Name" HeaderText="Gender_Name" SortExpression="Gender_Name" />
                    <asp:BoundField DataField="Major_Name" HeaderText="Major_Name" SortExpression="Major_Name" />
                    <asp:BoundField DataField="Degree_Name" HeaderText="Degree_Name" SortExpression="Degree_Name" />
                </Columns>
            </asp:GridView>
            <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:wust91Connection2000 %>"
                >
               
            </asp:SqlDataSource>
            <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><br />
            &nbsp;<asp:Button ID="Button1" runat="server" Text="Button" />
            <asp:CheckBox ID="CheckBox1" runat="server" /></div> Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
            SqlDataSource1.SelectParameters.Clear()
            SqlDataSource1.SelectParameters.Add("Major_Name", TypeCode.String, TextBox1.Text)
            If CheckBox1.Checked Then
                SqlDataSource1.SelectCommand = "SELECT [Stu_ID], [Gender_Name], [Stu_Name], [Major_Name], [Degree_Name], [Incoming_ID] FROM [V_searchstu] WHERE ([Stu_Name] LIKE '%' + @Major_Name + '%')"
            Else
                SqlDataSource1.SelectCommand = "SELECT [Stu_ID], [Stu_Name], [Gender_Name], [Major_Name], [Degree_Name], [Incoming_ID] FROM [V_searchstu] WHERE ([Stu_Name] = @Major_Name)"
            End If    End Sub
      

  9.   

    谢谢 各为了  我做出来了  为了让大家可以看到结果 我把代码铁出了供大家参考
    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1">
                <Columns>
                    <asp:BoundField DataField="Stu_Name" HeaderText="Stu_Name" SortExpression="Stu_Name" />
                    <asp:BoundField DataField="Gender_Name" HeaderText="Gender_Name" SortExpression="Gender_Name" />
                    <asp:BoundField DataField="Major_Name" HeaderText="Major_Name" SortExpression="Major_Name" />
                    <asp:BoundField DataField="Degree_Name" HeaderText="Degree_Name" SortExpression="Degree_Name" />
                </Columns>
            </asp:GridView>
            <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:wust91Connection2000 %>"
                >
               
            </asp:SqlDataSource>
            <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><br />
            &nbsp;<asp:Button ID="Button1" runat="server" Text="Button" />
            <asp:CheckBox ID="CheckBox1" runat="server" /></div> Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
            SqlDataSource1.SelectParameters.Clear()
            SqlDataSource1.SelectParameters.Add("Major_Name", TypeCode.String, TextBox1.Text)
            If CheckBox1.Checked Then
                SqlDataSource1.SelectCommand = "SELECT [Stu_ID], [Gender_Name], [Stu_Name], [Major_Name], [Degree_Name], [Incoming_ID] FROM [V_searchstu] WHERE ([Stu_Name] LIKE '%' + @Major_Name + '%')"
            Else
                SqlDataSource1.SelectCommand = "SELECT [Stu_ID], [Stu_Name], [Gender_Name], [Major_Name], [Degree_Name], [Incoming_ID] FROM [V_searchstu] WHERE ([Stu_Name] = @Major_Name)"
            End If    End Sub