2016-04-21 75 views
0

我真的被困在了我的想法上,但需要一些例子,我希望有人能帮助,我真的很感激。我有一个DataGridView,从MySQL数据库拉下来的数据,数据由数百行组成,每一行都有一个位置单元格,即。(01A,02A,03A)一直到99Z,我想要的是为用户输入一个位置范围和datagridview来过滤掉其他所有内容。VB.Net,按用户输入的范围过滤DataGridView

使用两个文本框和一个按钮的示例。 用户在文本框1中输入'05C',在文本框2中输入'10E',然后单击确定。 datagridview将过滤除了包含“05C”和“10E”之间的所有位置的行之外的所有内容。

所有地点从A到Z和1每个字母到99

我希望我所描述的这种不够好,我会很感激,如果有人可以给我举几个例子,我用Google搜索和搜索,但无法找到任何我正在寻找的例子。

很多谢谢。 如果您愿意,请随时给我私人消息。

+0

听起来像你想要一个DataView – Plutonix

+0

如果我使用了一个DataView,下面的工作是否会? DataView.RowFilter =“位置> = 05C和位置<= 10E” – Matt

+0

你可以改变表格。 您可以将字母和数字值分为2列[ColAlph]和[ColNum]。然后,您可以选择行 其中[colalph]> = rangestartAlph和[colalph] <= rangeEndAlph并且[ColNum]> = rangestartNum和[ColNum] <= rangeEndNum 如果您有想法,请原谅您的语法。 – ThatGuy

回答

0

编辑改变答案,以适应OP要求

您可以过滤你的数据源,以获得您需要的结果。 在您的过滤器按钮事件做

Dim bs As New BindingSource 
     bs.DataSource = 'Here goes the datasource of your gridview' 
     bs.Filter = gridCreation.Columns(i).HeaderText.ToString() + ">=" + TextBox1.Text + " and " + gridCreation.Columns(i).HeaderText.ToString() + "<=" + TextBox2.Text 
     //i would be the column number where your location row is. 
     //Remember that the index starts on 0 

     DataGridView.DataSource = bs 
     DataGridView.DataBind() 

希望这有助于

+0

谢谢,但它是一个WinForms应用程序而不是web。 – Matt

+0

@Matt请检查我编辑的答案 – abichango

0

我认为你必须要重新选择的所有数据,然后再存放到您的datagridview

SELECT <whatever> FROM <yourtable> WHERE ID >= '" & TextBox1.Text & "' and ID <= '" & TextBox2.Text & "'" 'I thought that it was the ID column lol idk, change it to whatever it must be. 

然后存储查询为your_datagridview.DataSource,那么你的datagridview将重新加载所有的数据。

在Click事件中输入your_button

希望这会有所帮助。