public static bool MatchTextDGV(DataGridView UG, DataGridViewRow oRow, clsSearchInfo m_searchInfo) { if (oRow == null) { return(false); } string strColumnKey = m_searchInfo.lookIn; //DataGridViewColumn oCol; bool bSearchAllColumns = true; if (strColumnKey != null) { bSearchAllColumns = false; } if (bSearchAllColumns) { foreach (DataGridViewColumn oCol in UG.Columns) { if (oRow.Cells[oCol.Name].Value != null && oRow.Cells[oCol.Name].Visible) { //MessageBox.Show(oRow.Cells[oCol.Name].Value.ToString()); if (Match(m_searchInfo.searchString, oRow.Cells[oCol.Name].Value.ToString(), m_searchInfo)) { m_oColumn = oCol; return(true); } } } } else { DataGridViewColumn oCol = UG.Columns[strColumnKey]; if (oRow.Cells[oCol.Name].Value != null && oRow.Cells[oCol.Name].Visible) { if (Match(m_searchInfo.searchString, oRow.Cells[oCol.Name].Value.ToString(), m_searchInfo)) { m_oColumn = oCol; return(true); } } } return(false); }
private static bool Match(string userString, string cellValue, clsSearchInfo m_searchInfo) { // If our search is case insensitive, make both strings uppercase if (!m_searchInfo.matchCase) { userString = userString.ToUpper(); cellValue = cellValue.ToUpper(); } // If we are searching any part of the cell value... if (m_searchInfo.searchContent == SearchContentEnum.AnyPartOfField) { // If the user string is larger than the cell value, it is by definition // a mismatch, so return false if (userString.Length > cellValue.Length) { return(false); } else if (userString.Length == cellValue.Length) { // If the lengths are equal, the strings must be equal as well if (userString == cellValue) { return(true); } else { return(false); } } else { // There is probably an easier way to do this for (int i = 0; i <= (cellValue.Length - userString.Length); i++) { if (userString == cellValue.Substring(i, userString.Length)) { return(true); } } return(false); } } else if (m_searchInfo.searchContent == SearchContentEnum.WholeField) { if (userString == cellValue) { return(true); } else { return(false); } } else if (m_searchInfo.searchContent == SearchContentEnum.StartOfField) { if (userString.Length >= cellValue.Length) { if (userString.Substring(0, cellValue.Length) == cellValue) { return(true); } else { return(false); } } else { if (cellValue.Substring(0, userString.Length) == userString) { return(true); } else { return(false); } } } return(false); }
public static void search(DataGridView UG, clsSearchInfo m_searchInfo) { try { DataGridViewRow oRow = UG.CurrentRow; int i = oRow.Index; if (oRow == null) { oRow = UG.Rows[i]; } if (m_searchInfo.searchDirection == SearchDirectionEnum.Down) { while (oRow != null) { i++; oRow = UG.Rows[i]; if (MatchTextDGV(UG, oRow, m_searchInfo)) { UG.CurrentCell = oRow.Cells[0]; if (m_oColumn != null) { UG.CurrentCell = oRow.Cells[m_oColumn.Name]; } return; } } } else if (m_searchInfo.searchDirection == SearchDirectionEnum.Up) { while (oRow != null) { i--; oRow = UG.Rows[i]; if (MatchTextDGV(UG, oRow, m_searchInfo)) { UG.CurrentCell = oRow.Cells[0]; } if (m_oColumn != null) { UG.CurrentCell = oRow.Cells[m_oColumn.Name]; } return; } } else if (m_searchInfo.searchDirection == SearchDirectionEnum.All) { while (oRow != null) { i++; if (i >= UG.Rows.Count) { break; } oRow = UG.Rows[i]; if (MatchTextDGV(UG, oRow, m_searchInfo)) { if (m_oColumn != null) { if (oRow.Cells[m_oColumn.Name].Visible) { UG.CurrentCell = oRow.Cells[m_oColumn.Name]; return; } } } } i = 0; oRow = UG.Rows[i]; while (oRow != null) { if (MatchTextDGV(UG, oRow, m_searchInfo)) { if (m_oColumn != null) { UG.CurrentCell = oRow.Cells[m_oColumn.Name]; } return; } i++; if (i >= UG.Rows.Count) { MessageBox.Show("Поиск закончен!"); return; } oRow = UG.Rows[i]; } } //MessageBox.Show("Просмотрены все записи до конца. Искали: '" & m_searchInfo.searchString & "' , но не нашли.", "Infragistics UltraGrid", MessageBoxButtons.OK, MessageBoxIcon.None) } catch (Exception) { throw; } }