Click here to Skip to main content
15,891,473 members
Articles / Programming Languages / C#

DatGridView Filtering User Control

Rate me:
Please Sign up or sign in to vote.
4.93/5 (12 votes)
10 Jul 2009CPOL7 min read 74.7K   4.1K   73  
A user control that can be attached to any DataGridView that uses a DataTable as the DataSource.
<?xml version="1.0" encoding="utf-8"?>
<root>
  <!-- 
    Microsoft ResX Schema 
    
    Version 2.0
    
    The primary goals of this format is to allow a simple XML format 
    that is mostly human readable. The generation and parsing of the 
    various data types are done through the TypeConverter classes 
    associated with the data types.
    
    Example:
    
    ... ado.net/XML headers & schema ...
    <resheader name="resmimetype">text/microsoft-resx</resheader>
    <resheader name="version">2.0</resheader>
    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
        <value>[base64 mime encoded serialized .NET Framework object]</value>
    </data>
    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
        <comment>This is a comment</comment>
    </data>
                
    There are any number of "resheader" rows that contain simple 
    name/value pairs.
    
    Each data row contains a name, and value. The row also contains a 
    type or mimetype. Type corresponds to a .NET class that support 
    text/value conversion through the TypeConverter architecture. 
    Classes that don't support this are serialized and stored with the 
    mimetype set.
    
    The mimetype is used for serialized objects, and tells the 
    ResXResourceReader how to depersist the object. This is currently not 
    extensible. For a given mimetype the value must be set accordingly:
    
    Note - application/x-microsoft.net.object.binary.base64 is the format 
    that the ResXResourceWriter will generate, however the reader can 
    read any of the formats listed below.
    
    mimetype: application/x-microsoft.net.object.binary.base64
    value   : The object must be serialized with 
            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
            : and then encoded with base64 encoding.
    
    mimetype: application/x-microsoft.net.object.soap.base64
    value   : The object must be serialized with 
            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
            : and then encoded with base64 encoding.

    mimetype: application/x-microsoft.net.object.bytearray.base64
    value   : The object must be serialized into a byte array 
            : using a System.ComponentModel.TypeConverter
            : and then encoded with base64 encoding.
    -->
  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
    <xsd:element name="root" msdata:IsDataSet="true">
      <xsd:complexType>
        <xsd:choice maxOccurs="unbounded">
          <xsd:element name="metadata">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" />
              </xsd:sequence>
              <xsd:attribute name="name" use="required" type="xsd:string" />
              <xsd:attribute name="type" type="xsd:string" />
              <xsd:attribute name="mimetype" type="xsd:string" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="assembly">
            <xsd:complexType>
              <xsd:attribute name="alias" type="xsd:string" />
              <xsd:attribute name="name" type="xsd:string" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="data">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="resheader">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" />
            </xsd:complexType>
          </xsd:element>
        </xsd:choice>
      </xsd:complexType>
    </xsd:element>
  </xsd:schema>
  <resheader name="resmimetype">
    <value>text/microsoft-resx</value>
  </resheader>
  <resheader name="version">
    <value>2.0</value>
  </resheader>
  <resheader name="reader">
    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <resheader name="writer">
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <metadata name="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
    <value>17, 17</value>
  </metadata>
  <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
  <data name="tsbApply.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
        YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAoFJREFUOE99k9tP
        E0EUh6cx0Rf/B998MP4JPokx4cF4eTBeYiBGEzEKEW8hkhgS22hQCqIgWAoGFMQLFlJusimCCIKUilil
        FMGyLS1t6fbe7u3n7jYtFBonmWxm9nzfOZM5oyJbxtC0G3ZXhEC1i4jiDhIKh8hOEiP79uwm+Qf2qrbG
        Z631A3/x6rMbFjoBf5RDIMLDH2JhW2HQ1jsLdSMFy28nckoedy/hJx0CJ4jYOuQdjhdAuxkUVXSg5f1E
        tqSxdwnfHCGI4nY4LZP/yTMYZHD0ch1MX+c3JA1G639hWWIcXcYfjwjLQhDfrXbkFVanBHVvZ2CnmW1l
        b96gJmnsP67HycqYIomG/SjVdKC21QRy7/kweEHIxM8u81mywfEVBT5bzSmzfZSHz+tB02sKF8pbQW5U
        DWbKf2JMKMHzzpSEmtyA88sWUN8XRSIew7rPg09jZpy6pgMpftCHJJsC0llkSeuAM5NZhqu74xClSiOR
        MPxeF0bHzThxtQHkWMkLzC24FUG/mYccLIvSZadhQYKTySTW131w0Q50GEw4U9oEUlFPQd81mTm35k08
        I5FhrSGmZOY4FnGpfJ93Da6VZVxXv4SmoT91E1fUH8CEY4pEvutb+oAiqelJQBB4cCyLRCIu9UAQDocD
        w2NTOFJUt9EHtW0jqHhqlII58GxUKZX6IUhrASybVGAmEIDLKZ19YganS+rR2Ted3Y3F6k6UV72D1+NC
        POJHmPEhFpK+AR+8a6twr9KYs/7CxTs6VDZ9zP0eLt1tR16BFvef9WDkixmLi3bY5m0Yn7JAqzPgUKEW
        j5qHcsObX5i2hcK5m804KMkOn69BQVkLbj/sygn+A1nyti436M2cAAAAAElFTkSuQmCC
</value>
  </data>
  <data name="tsbReset.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
        YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAsNJREFUOE91k11I
        k1EYx18J6qaLLoqgGykoQou6Kohu+iCI0KKryiKJog8qtSyxhJAyDM1V4sdMnZHV+rQ0P7LMj5xWllqm
        km665XxdruXru7lyc/v1OtlSmM/V4Tnn/zv/85znCRGCRG6ZHkLmCV7vHEG2y8JcwSmEhc4Xtm9cERLs
        fCBX+MrE/UYL7ea/2MbcjDgmsMkuegYkiiu+kpJXw6yAW6X9dJpl3B4v34wymmoj/vAqC/eEB7NF4niy
        lqJn72eC8ir6+fRDxuv1IjlcRCQ1EnmhPgCYvhgdlYg8nj0ToC7v8ol7FAebEnWsTTeyLraeyg8iQ7Y/
        Ab3b7cE17qS9s5ct0TemINlP2tCbJWq/WAmPUcSZFtZrZNZkmFme2MHKEw2oXxoCEEkaYcz+izNXtWTe
        rUW4cruOCY+HiwVfWXaundVZNsJVQ6xSiYSlmgjPEFka30aattvnUpYlrMMWCh7WcDjpLkJ8RrVvYzJS
        73ex5FgjSy8bCDv1jv2XdWyIrSM0oYPF0W8ZGHYw5rBjs1qo17WyJy4f4fS1SsZdEwGLpU2DLI6qYsf5
        2kAuLucLC6OqUT3uVhyMKgCRd82t7D6lRtgVc4dvvZYZFf/cO8J1xbI/RuzjLNhZwpH0Dwwr9kXzD7Qv
        atl3pgAhOaeGwpKPQb/Mn7Q73SyKfEJeaTfi4ADigJGzKfe4qq6a+omTKc+R7E7feY/n/3P8gI5+iXVH
        K+g3mdHrDdTpWoiY3guZxQ0kZ5UrYjfucaVQYw6fdrK2nsn+MFlpbjPQZ+ijvqmVvTE5PKr8PLOZTqc8
        IinjKdafIn8cNuzSL5yyDfn3MBZRsW020dHZxZGL+aQVvA4+E8cuPWDLQRWpuWU0KDcZDHp6vvfQ3NKO
        Kv8FW6NVXNe8mX2g/JOmKqrhwDkNmxXYtkM3OZhYREJ6SVDhPzW1m58HE8JdAAAAAElFTkSuQmCC
</value>
  </data>
  <data name="tsbShow.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        iVBORw0KGgoAAAANSUhEUgAAAA0AAAANCAYAAABy6+R8AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
        YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAItJREFUKFNjZACC
        E1cf/N989CqIiRf4WmszWGgrMII1VM/a+v/J6w////77hxOD5EHqLt55+p+BGA0ww2AawZpggq7RM/+D
        MLKNyGIfvnwH24aiCaQYWRE2Q7BqQtaIbitIDqcmmEZsAYOhiZCfcNpEWz9hi1hsgQCPJ1JTBEg9OK3B
        NIJCBh+GaQAAgscW3mzK0woAAAAASUVORK5CYII=
</value>
  </data>
  <data name="tsbExport.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
        YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAElJREFUOE9jYBje
        4MCBA/9hmGSfgjQCNcExlE+8OUPUAHRnI4cB0eFByBCiAhOXIURphsUTxbEAMghmCEk2o6cUijQTn+wo
        UAkAY/VsRlvaylwAAAAASUVORK5CYII=
</value>
  </data>
  <data name="pbButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
        YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAALCwAA
        CwsBbQSEtwAAATVJREFUOE9j/P//PwNFAGQAJRiuGegKkFOIxjBLqWcAud6Au+D06dP/jxw58n/ZsmVA
        s/4zrNp69P/KLUf+L990+H//3PVgMWiAw9lgPkwCpPndu3f/a2trwQqWbzoEov///vv/f2RWI1gMOYww
        wmDHjh3/X79+/T8nJweseNG6/f///vv//8Gzt//dIgsJu2DDhg3/Hz169D8iIgKseO7KXf9//P7///Ld
        p/+dw/IJGwDy+7Vr1/77+fmBFU9fsu3/p+///5+5+ui/Q3AuYQOmTp0K1uzr6wtWPHHexv9vv/z/f+ji
        4/8OIXmEDUCPxu4Zq/8/+/T//56zT/67RRWRbkDzxKX/rz/7/n/bqaf/7YMgAYsN48wHDX2L/ycXd/63
        9s/4b+qZTLoBuGxEF6coJ4IMAwDWwo1UZzilNwAAAABJRU5ErkJggg==
</value>
  </data>
  <metadata name="imageList1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
    <value>122, 17</value>
  </metadata>
  <data name="imageList1.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
    <value>
        AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w
        LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
        ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABC
        CQAAAk1TRnQBSQFMAgEBAgEAAQQBAAEEAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
        AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
        AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
        AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA
        AWYDAAGZAwABzAIAATMDAAIzAgABMwFmAgABMwGZAgABMwHMAgABMwH/AgABZgMAAWYBMwIAAmYCAAFm
        AZkCAAFmAcwCAAFmAf8CAAGZAwABmQEzAgABmQFmAgACmQIAAZkBzAIAAZkB/wIAAcwDAAHMATMCAAHM
        AWYCAAHMAZkCAALMAgABzAH/AgAB/wFmAgAB/wGZAgAB/wHMAQABMwH/AgAB/wEAATMBAAEzAQABZgEA
        ATMBAAGZAQABMwEAAcwBAAEzAQAB/wEAAf8BMwIAAzMBAAIzAWYBAAIzAZkBAAIzAcwBAAIzAf8BAAEz
        AWYCAAEzAWYBMwEAATMCZgEAATMBZgGZAQABMwFmAcwBAAEzAWYB/wEAATMBmQIAATMBmQEzAQABMwGZ
        AWYBAAEzApkBAAEzAZkBzAEAATMBmQH/AQABMwHMAgABMwHMATMBAAEzAcwBZgEAATMBzAGZAQABMwLM
        AQABMwHMAf8BAAEzAf8BMwEAATMB/wFmAQABMwH/AZkBAAEzAf8BzAEAATMC/wEAAWYDAAFmAQABMwEA
        AWYBAAFmAQABZgEAAZkBAAFmAQABzAEAAWYBAAH/AQABZgEzAgABZgIzAQABZgEzAWYBAAFmATMBmQEA
        AWYBMwHMAQABZgEzAf8BAAJmAgACZgEzAQADZgEAAmYBmQEAAmYBzAEAAWYBmQIAAWYBmQEzAQABZgGZ
        AWYBAAFmApkBAAFmAZkBzAEAAWYBmQH/AQABZgHMAgABZgHMATMBAAFmAcwBmQEAAWYCzAEAAWYBzAH/
        AQABZgH/AgABZgH/ATMBAAFmAf8BmQEAAWYB/wHMAQABzAEAAf8BAAH/AQABzAEAApkCAAGZATMBmQEA
        AZkBAAGZAQABmQEAAcwBAAGZAwABmQIzAQABmQEAAWYBAAGZATMBzAEAAZkBAAH/AQABmQFmAgABmQFm
        ATMBAAGZATMBZgEAAZkBZgGZAQABmQFmAcwBAAGZATMB/wEAApkBMwEAApkBZgEAA5kBAAKZAcwBAAKZ
        Af8BAAGZAcwCAAGZAcwBMwEAAWYBzAFmAQABmQHMAZkBAAGZAswBAAGZAcwB/wEAAZkB/wIAAZkB/wEz
        AQABmQHMAWYBAAGZAf8BmQEAAZkB/wHMAQABmQL/AQABzAMAAZkBAAEzAQABzAEAAWYBAAHMAQABmQEA
        AcwBAAHMAQABmQEzAgABzAIzAQABzAEzAWYBAAHMATMBmQEAAcwBMwHMAQABzAEzAf8BAAHMAWYCAAHM
        AWYBMwEAAZkCZgEAAcwBZgGZAQABzAFmAcwBAAGZAWYB/wEAAcwBmQIAAcwBmQEzAQABzAGZAWYBAAHM
        ApkBAAHMAZkBzAEAAcwBmQH/AQACzAIAAswBMwEAAswBZgEAAswBmQEAA8wBAALMAf8BAAHMAf8CAAHM
        Af8BMwEAAZkB/wFmAQABzAH/AZkBAAHMAf8BzAEAAcwC/wEAAcwBAAEzAQAB/wEAAWYBAAH/AQABmQEA
        AcwBMwIAAf8CMwEAAf8BMwFmAQAB/wEzAZkBAAH/ATMBzAEAAf8BMwH/AQAB/wFmAgAB/wFmATMBAAHM
        AmYBAAH/AWYBmQEAAf8BZgHMAQABzAFmAf8BAAH/AZkCAAH/AZkBMwEAAf8BmQFmAQAB/wKZAQAB/wGZ
        AcwBAAH/AZkB/wEAAf8BzAIAAf8BzAEzAQAB/wHMAWYBAAH/AcwBmQEAAf8CzAEAAf8BzAH/AQAC/wEz
        AQABzAH/AWYBAAL/AZkBAAL/AcwBAAJmAf8BAAFmAf8BZgEAAWYC/wEAAf8CZgEAAf8BZgH/AQAC/wFm
        AQABIQEAAaUBAANfAQADdwEAA4YBAAOWAQADywEAA7IBAAPXAQAD3QEAA+MBAAPqAQAD8QEAA/gBAAHw
        AfsB/wEAAaQCoAEAA4ADAAH/AgAB/wMAAv8BAAH/AwAB/wEAAf8BAAL/AgAD/8IAAewBbQEHAfQCAAEH
        AW0B7QHyCgAB8gHtAW0B8AIAAfQBBwFtAewiAAEPAQABQwEHAfQBAAH3AQABDwHsAfIIAAHyAesBDgEA
        Ae8BAAH0Ae8BEQEAAUMiAAHwARABAAFDAQcB9AHzAewBAAEPAewB8gYAAfIB6wEOAQAB7AHzAfQB7wFD
        AQABQwHxIwABvAERAQABFQEHAfQB8wHsAQABDwHsAfIEAAHyAesBDgEAAewB8wH0Ae8BQwEAARUB8CUA
        AbwBQwEAARUB7wH0AfMB7AEAAQ8B7AHzAgAB8gHrAQ4BAAHsAfMB9AHvAUMBAAEUAfAmAAHwARUBAAFD
        Ae8B9AHzAewBAAEOAesB8gIAAfIBbQEOAQAB7QL0AfcBEQEAARMB8SUAAfEBQwEAAUMB7wH0AfMB7AEA
        AQ4B6wHyBAAB8gFtAQ4BAAHtAfQB8wHvAREBAAEUAfEjAAHyARABAAERAe8C9AHsAQABDgHrAfIGAAHy
        AW0BDgEAAe0C9AH3AREBAAEVAfIiAAEPAQABEAHvAfQBAAH3AQABDgHrAfIIAAHyAW0BDgEAAe8BAAH0
        AfcBEAEAAUMiAAFtARIBBwH0AgABBwESAewB8goAAfIB7AESAbwCAAH0Ae8BEgHr4QABQgFNAT4HAAE+
        AwABKAMAAUADAAEQAwABAQEAAQEFAAGAFwAD/wEABP8EAAT/BAAE/wQAAYYBHwH4AWEEAAGCAQ8B8AFB
        BAABgAEHAeABAQQAAcABAwHAAQMEAAHgAQEBgAEHBAAB4AEBAYABBwQAAcABAwHAAQMEAAGAAQcB4AEB
        BAABggEPAfABQQQAAYYBHwH4AWEEAAT/BAAE/wQABP8EAAs=
</value>
  </data>
</root>

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Retired None
Australia Australia
Started my programming life writing Excel 1.0 macros, God what a long time ago.

Now I'm a dotnet developer, I get to influence direction, play with new toys, build stuff, life is wonderful.

Greatest buzz you can get, walk past a row of desks and see your application running on all of them (and getting paid).

Greatest irritant, pouring 12 months of knowledge and experience into an empty head only to have it leave.

And now I'm retired, no deadlines, no meetings, no managers (except the ONE) and no users!

Comments and Discussions