Select datagridview rows by range or numbers

Hello,

I have textbox where user can input numbers like 3.4,7,8 or add a range like 6-12 for selection of datagridview rows.
Any suggestions on how can i achieve this.

Cheers
RIASAsked:
Who is Participating?
 
ArkConnect With a Mentor Commented:
Private Function GetNumbers(input As String) As List(Of Integer)
    Dim lst As New List(Of Integer)
    Dim comma = input.Split(New Char() {","c}, StringSplitOptions.RemoveEmptyEntries)
    For Each s In comma
        Dim dash = s.Split(New Char() {"-"c}, StringSplitOptions.RemoveEmptyEntries)
        If dash.Length = 0 OrElse dash.Length > 2 Then Continue For
        Dim i1 As Integer
        If Not Integer.TryParse(dash(0).Trim, i1) Then Continue For
        If dash.Length = 1 Then
            lst.Add(i1)
        ElseIf dash.Length = 2 Then
            Dim i2 As Integer
            If Not Integer.TryParse(dash(1).Trim, i2) Then Continue For
            lst.AddRange(Enumerable.Range(i1, i2 - i1 + 1))
        End If
    Next
    Return lst
End Function

Open in new window

Using:
DataGridView1.ClearSelection()
For Each num In GetNumbers("1,2 - 5,8,10 - 15")
    DataGridView1.Rows(num).Selected = True
Next

Open in new window

1
 
Pawan KumarDatabase ExpertCommented:
So what is your req?
0
 
RIASAuthor Commented:
Select the rows as per user input

example:

3.4,7,8 or add a range like 6-12
0
The new generation of project management tools

With monday.com’s project management tool, you can see what everyone on your team is working in a single glance. Its intuitive dashboards are customizable, so you can create systems that work for you.

 
AndyAinscowFreelance programmer / ConsultantCommented:
Use string.split and split on the comma.
Look at each string in the array.
If it does NOT contain a hyphen then convert to a number (index of row) and select that row
else split into two strings at the hyphen.  The first is the index of the start row to select, the second is the index of the row to stop selecting at.  You will probably require a loop to achieve that - or should I not mention that nasty word  ;-)
1
 
Pawan KumarConnect With a Mentor Database ExpertCommented:
Try...


int index = 2
string val1 =  dataset.Tables[0].Rows[index][Col_1].ToString();



string s = "1,2,3";
string[] values = s.Split(',');
for(int Counter = 0; i < values.Length; Counter++)
{
   string a = dataset.Tables[0].Rows[Counter][Col_1].ToString();
}


string s = "1-6";
--Here get value 1 & 6 using substring function -- s.Substring(0,1);
for(int Counter = 1; i <= 6; Counter++)
{
   string a = dataset.Tables[0].Rows[Counter][Col_1].ToString();
}
1
 
RIASAuthor Commented:
Pawan thanks !  Will try and get back
0
 
RIASAuthor Commented:
Thanks Ark!
0
 
RIASAuthor Commented:
Ark,It works perfectly mate, but slight issue regarding the numbers
As in dotnet the datagrid starts with 0
The user will input something like 1-10 which is actuallly  0-9 for the dsatragridview to select .
Any suggestions?
0
 
ArkCommented:
DataGridView1.Rows(num-1).Selected = True
0
 
RIASAuthor Commented:
Cheers!
0
 
RIASAuthor Commented:
Ark amazing code!!!
0
All Courses

From novice to tech pro — start learning today.