Hello,
I'm still working on project filter SqlDataSource with parameters. Code under Button1_Click event works fine, controls are dropdownlists.
Now, I want to move forward, to filter with checkboxlists items. I have write code under Button2_Click event. I have combine codes of my current knowledge which I have it in my head.
I'm getting error:
Error: Sys.WebForms.PageRequestManagerServerErrorException: Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
I hope someone could help me with code from Button2_Click to reach the goal :-)
Working code 'Filter gridview with checkboxlist items' which I was using in the past.Code:Imports System.Data Imports System.Data.SqlClient Partial Class zest Inherits System.Web.UI.Page Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click SqlDataSource1.SelectCommand = "Select * From test WHERE (FirstName = @FirstName Or @FirstName IS NULL)" SqlDataSource1.SelectParameters.Add("FirstName", CheckBoxListFirstName.Text) SqlDataSource1.CancelSelectOnNullParameter = False SqlDataSource1.DataBind() End Sub Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load SqlDataSource1.SelectParameters.Clear() End Sub Protected Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click Dim MyFilter As String = "" Dim Count As Integer = 0 Dim i As Integer For i = 0 To CheckBoxListFirstName.Items.Count - 1 If CheckBoxListFirstName.Items(i).Selected Then Count += 1 If MyFilter = "" Then MyFilter = " WHERE FirstName = @FirstName Or @FirstName IS NULL" Else MyFilter = MyFilter & " OR FirstName = @FirstName Or @FirstName IS NULL" End If End If Next SqlDataSource1.CancelSelectOnNullParameter = False SqlDataSource1.SelectCommand = "SELECT * FROM test" & MyFilter SqlDataSource1.SelectParameters.Add("FirstName", CheckBoxListFirstName.Items(i).Text) SqlDataSource1.DataBind() End Sub End Class
Aspx page:Code:Dim MyFilter As String = "" Dim Count As Integer = 0 Dim i As Integer For i = 0 To CheckBoxListFirstName.Items.Count - 1 If CheckBoxListFirstName.Items(i).Selected Then Count += 1 If MyFilter = "" Then MyFilter = " WHERE FirstName like '%" & CheckBoxListFirstName.Items(i).Text & "%'" Else MyFilter = MyFilter & " OR FirstName like '%" & CheckBoxListFirstName.Items(i).Text & "%'" End If End If Next SqlDataSource1.SelectCommand = "SELECT * FROM test" & MyFilter
Thanks in advance for help!Code:<form id="form1" runat="server"> <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager> <br /> <asp:DropDownList ID="DropDownListFirstName" runat="server"> <asp:ListItem></asp:ListItem> <asp:ListItem>John</asp:ListItem> <asp:ListItem>Paul</asp:ListItem> <asp:ListItem>James</asp:ListItem> </asp:DropDownList> FirstName<br /> <asp:DropDownList ID="DropDownListSecondName" runat="server"> <asp:ListItem></asp:ListItem> <asp:ListItem>Brown</asp:ListItem> <asp:ListItem>White</asp:ListItem> </asp:DropDownList> SecondName<br /> <asp:DropDownList ID="DropDownListTown" runat="server"> <asp:ListItem></asp:ListItem> <asp:ListItem>New York</asp:ListItem> <asp:ListItem>London</asp:ListItem> <asp:ListItem>Paris</asp:ListItem> </asp:DropDownList> Town<br /> <asp:Button ID="Button1" runat="server" Text="Button" /> <br /> <asp:UpdatePanel ID="UpdatePanel1" runat="server"> <ContentTemplate> <div> <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1" EmptyDataText="There are no data records to display."> <Columns> <asp:BoundField DataField="FirstName" HeaderText="FirstName" SortExpression="FirstName" /> <asp:BoundField DataField="SecondName" HeaderText="SecondName" SortExpression="SecondName" /> <asp:BoundField DataField="Town" HeaderText="Town" SortExpression="Town" /> </Columns> </asp:GridView> <asp:CheckBoxList ID="CheckBoxListFirstName" runat="server" DataSourceID="SqlDataSourceFirstName" DataTextField="FirstName" DataValueField="FirstName" BorderStyle="Solid"> </asp:CheckBoxList> <asp:SqlDataSource ID="SqlDataSourceFirstName" runat="server" ConnectionString="<%$ ConnectionStrings:database21ConnectionString %>" SelectCommand="SELECT DISTINCT [FirstName] FROM [test]"></asp:SqlDataSource> <asp:CheckBoxList ID="CheckBoxListSecondName" runat="server" DataSourceID="SqlDataSourceSecondName" DataTextField="SecondName" DataValueField="SecondName" BorderStyle="Solid"> </asp:CheckBoxList> <asp:SqlDataSource ID="SqlDataSourceSecondName" runat="server" ConnectionString="<%$ ConnectionStrings:database21ConnectionString %>" SelectCommand="SELECT DISTINCT [SecondName] FROM [test]"></asp:SqlDataSource> <asp:CheckBoxList ID="CheckBoxListTown" runat="server" DataSourceID="SqlDataSourceTown" DataTextField="Town" DataValueField="Town" BorderStyle="Solid"> </asp:CheckBoxList> <asp:SqlDataSource ID="SqlDataSourceTown" runat="server" ConnectionString="<%$ ConnectionStrings:database21ConnectionString %>" SelectCommand="SELECT DISTINCT [Town] FROM [test]"> </asp:SqlDataSource> <asp:Button ID="Button2" runat="server" Text="Button" /> <br /> <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:database21ConnectionString %>" SelectCommand="SELECT [FirstName], [SecondName], [Town] FROM [test]"> </asp:SqlDataSource> </div> </ContentTemplate> </asp:UpdatePanel> </form>




Reply With Quote
