100165622.htm

来自「C#高级编程(第三版),顶死你们。。 。up」· HTM 代码 · 共 321 行 · 第 1/4 页

HTM
321
字号
<p align="center"><span lang="EN-US"><img height="121" src="22/image003.jpg" width="145" alt="" /></span></p>
<p style="FTEL: .0001pt" align="center"><span style="FONT-FAMILY: 宋体">图</span><span lang="EN-US">&nbsp; 22-3</span></p>
<h4 style="FTEL: 21.45pt"><span lang="EN-US">2.</span><span lang="EN-US" style="FONT-FAMILY: 宋体"> </span><span lang="EN-US">DataTable</span></h4>
<p class="MsoNormal"><a ftel="datatables"><span style="FONT-FAMILY: 宋体">在</span><span lang="EN-US">DataGrid</span></a><span style="FONT-FAMILY: 宋体">控件中显示</span><span lang="EN-US">DataTable</span><span style="FONT-FAMILY: 宋体">有两种方式:</span></p>
<p class="1" style="MARGIN-LEFT: 37.55pt; FTEL: -16.1pt"><span lang="EN-US">●<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="FONT-FAMILY: 宋体">如果</span><span lang="EN-US">DataTable</span><span style="FONT-FAMILY: 宋体">是独立的,就调用</span><span lang="EN-US">SetDataBinding(DataTable, null)</span><span style="FONT-FAMILY: 宋体">。</span></p>
<p class="1" style="MARGIN-LEFT: 37.55pt; FTEL: -16.1pt"><span lang="EN-US">●<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="FONT-FAMILY: 宋体">如果在</span><span lang="EN-US">DataSet</span><span style="FONT-FAMILY: 宋体">中包含</span><span lang="EN-US">DataTable</span><span style="FONT-FAMILY: 宋体">,就调用</span><span class="codeintext-PRODUCTION"><span lang="EN-US" style="FONT-FAMILY: 'Times New Roman'">SetDataBinding(DataSet,</span></span><span lang="EN-US"> <span class="codeintext-PRODUCTION"><span style="FONT-FAMILY: 'Times New Roman'">&quot;&lt;Table</span></span> <span class="codeintext-PRODUCTION"><span style="FONT-FAMILY: 'Times New Roman'">Name&gt;&quot;)</span></span></span><span style="FONT-FAMILY: 宋体">。</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">图</span><span lang="EN-US">22-4</span><span style="FONT-FAMILY: 宋体">所示为运行</span><span lang="EN-US">DatasourceDataTable</span><span style="FONT-FAMILY: 宋体">示例代码的结果。</span></p>
<p align="center"><span lang="EN-US"><img height="196" src="22/image004.jpg" width="326" alt="" /></span></p>
<p style="FTEL: 8.15pt" align="center"><span style="FONT-FAMILY: 宋体">图</span><span lang="EN-US">&nbsp; 22-4</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">注意最后一列显示了一个复选框,而不是更常见的编辑控件。</span><span lang="EN-US">DataGrid</span><span style="FONT-FAMILY: 宋体">没有显示其他信息,而是从数据源中读取模式</span><span lang="EN-US">(</span><span style="FONT-FAMILY: 宋体">在本例中是</span><span lang="EN-US">Products</span><span style="FONT-FAMILY: 宋体">表</span><span lang="EN-US">)</span><span style="FONT-FAMILY: 宋体">,确定在该列中应显示什么控件。但不要太激动,目前支持的类型只有两种:文本框和复选框。其他类型的映射必须手工处理。</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">在修改了</span><span lang="EN-US">DataGrid</span><span style="FONT-FAMILY: 宋体">中的字段时,数据库中的数据不会改变,因为此时数据仅存储在本地计算机上<span style="LETTER-SPACING: -1pt">&mdash;&mdash;</span></span><span style="LETTER-SPACING: -1pt"> </span><span style="FONT-FAMILY: 宋体">没有与数据库的活动连接。后面的&ldquo;更新数据源&rdquo;一节将更新原始数据。</span></p>
<h4 style="FTEL: 21.45pt"><span lang="EN-US">3. </span><span style="FONT-FAMILY: 黑体">显示</span><span lang="EN-US">DataView</span><span style="FONT-FAMILY: 黑体">中的数据</span></h4>
<p class="MsoNormal"><a ftel="datasources"><span lang="EN-US">DataView</span></a><span style="FONT-FAMILY: 宋体">提供了一种过滤和排序</span><span lang="EN-US">DataTable</span><span style="FONT-FAMILY: 宋体">中数据的一种方式。在从数据库中选择数据时,用户一般可以单击列标题,对数据排序。此外,还可以只过滤要显示在某些行中的数据,例如用户修改过的所有数据。</span><span lang="EN-US">DataView</span><span style="FONT-FAMILY: 宋体">允许限制要显示给用户的数据行,但不允许限制</span><span lang="EN-US">DataTable</span><span style="FONT-FAMILY: 宋体">中的数据列。</span></p>
<p class="a3" style="MARGIN-TOP: 8.15pt; FTEL: 21.45pt"><span style="FONT-FAMILY: 黑体">提示:</span></p>
<p class="a1" style="FTEL: 21.45pt"><span lang="EN-US">DataView</span><span style="FONT-FAMILY: 楷体_GB2312">不允许修改要显示的数据列,只允许修改要显示的数据行。</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">本章后面的&ldquo;</span><span lang="EN-US">DataGridTableStyle</span><span style="FONT-FAMILY: 宋体">和</span><span lang="EN-US">DataGridColumnStyle</span><span style="FONT-FAMILY: 宋体">&rdquo;一节将介绍一个示例,说明如何限制要显示的数据列。</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">根据现有的</span><span lang="EN-US">DataTable</span><span style="FONT-FAMILY: 宋体">创建</span><span lang="EN-US">DataView</span><span style="FONT-FAMILY: 宋体">的代码如下所示:</span></p>
<p class="2" style="MARGIN-TOP: 8.15pt; MARGIN-LEFT: 21.45pt; MARGIN-RIGHT: 0cm; FTEL: 18.45pt"><span lang="EN-US">DataView dv = new DataView(dataTable);</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">创建好后,就可以改变</span><span lang="EN-US">DataView</span><span style="FONT-FAMILY: 宋体">上的设置,当该视图显示在</span><span lang="EN-US">DataGrid</span><span style="FONT-FAMILY: 宋体">中时,这些设置会影响要显示的数据,以及允许对这些数据进行的操作。例如:</span></p>
<p class="1" style="MARGIN-LEFT: 37.55pt; FTEL: -16.1pt"><span lang="EN-US" style="LETTER-SPACING: 0.2pt">●<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="FONT-FAMILY: 宋体">设置</span><span lang="EN-US"> AllowEdit = false</span><span style="FONT-FAMILY: 宋体">表示在数据行上禁用所有列的编辑功能。</span></p>
<p class="1" style="MARGIN-LEFT: 37.55pt; FTEL: -16.1pt"><span lang="EN-US">●<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="FONT-FAMILY: 宋体">设置</span><span lang="EN-US">AllowNew = false </span><span style="FONT-FAMILY: 宋体">表示禁用新行功能。</span></p>
<p class="1" style="MARGIN-LEFT: 37.55pt; FTEL: -16.1pt"><span lang="EN-US" style="LETTER-SPACING: 0.2pt">●<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="FONT-FAMILY: 宋体">设置</span><span lang="EN-US"> AllowDelete = false</span><span style="FONT-FAMILY: 宋体">表示禁用删除行的功能。</span></p>
<p class="1" style="MARGIN-LEFT: 37.55pt; FTEL: -16.1pt"><span lang="EN-US" style="LETTER-SPACING: 0.2pt">●<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="FONT-FAMILY: 宋体">设置</span><span lang="EN-US"> RowStateFilter</span><span style="FONT-FAMILY: 宋体">只显示指定状态的行。</span></p>
<p class="1" style="MARGIN-LEFT: 37.55pt; FTEL: -16.1pt"><span lang="EN-US">●<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="FONT-FAMILY: 宋体">设置</span><span lang="EN-US"> RowFilter </span><span style="FONT-FAMILY: 宋体">可过滤数据行。</span></p>
<p class="1" style="MARGIN-LEFT: 37.55pt; FTEL: -16.1pt"><span lang="EN-US">●<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="FONT-FAMILY: 宋体">按照给定的列排序</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">下一节将介绍使用</span><span lang="EN-US">RowStateFilter</span><span style="FONT-FAMILY: 宋体">设置,其他选项都是可以自我解释的。</span></p>
<p class="MsoNormal"><span lang="EN-US">(1) </span><span style="FONT-FAMILY: 宋体">通过数据过滤数据行</span></p>
<p class="MsoNormal"><a ftel="filtering"><span style="FONT-FAMILY: 宋体">创建好</span><span lang="EN-US">DataView</span></a><span style="FONT-FAMILY: 宋体">后,就可以通过设置</span><span lang="EN-US">RowFilter</span><span style="FONT-FAMILY: 宋体">属性,来改变视图中的数据。这个属性是一个字符串,可用作按照给定条件过滤数据的一种方式<span style="LETTER-SPACING: -1pt">&mdash;&mdash;</span></span><span lang="EN-US" style="LETTER-SPACING: -1pt">&nbsp; </span><span style="FONT-FAMILY: 宋体">该字符串的值就是过滤条件。其语法类似于一般</span><span lang="EN-US">SQL</span><span style="FONT-FAMILY: 宋体">中的</span><span lang="EN-US">WHERE</span><span style="FONT-FAMILY: 宋体">子句,但主要是对已经从数据库中选择出来的数据进行操作。</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">过滤子句的一些示例如表</span><span lang="EN-US">22-1</span><span style="FONT-FAMILY: 宋体">所示。</span></p>
<p class="a5" style="MARGIN-TOP: 8.15pt"><span style="FONT-FAMILY: 黑体">表</span><span lang="EN-US">&nbsp; 22-1</span></p>
<div align="center">
<table class="MsoNormalTable" style="MARGIN-LEFT: 5.55pt; BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-COLLAPSE: collapse; BORDER-BOTTOM-STYLE: none" cellspacing="0" cellpadding="0" border="1">
    <tbody>
        <tr>
            <td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 9.9pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 9.9pt; BORDER-LEFT-WIDTH: 1pt; BORDER-LEFT-COLOR: windowtext; PADDING-BOTTOM: 0cm; WIDTH: 105pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid" valign="top" width="140">
            <p class="a2"><span style="FONT-FAMILY: 黑体">子</span><span lang="EN-US" style="FONT-FAMILY: 'Times New Roman'">&nbsp; </span><span style="FONT-FAMILY: 黑体">句</span></p>
            </td>
            <td style="PADDING-RIGHT: 9.9pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 9.9pt; PADDING-BOTTOM: 0cm; WIDTH: 331.7pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none" valign="top" width="442">
            <p class="a2"><span style="FONT-FAMILY: 黑体">说</span><span lang="EN-US" style="FONT-FAMILY: 'Times New Roman'">&nbsp; </span><span style="FONT-FAMILY: 黑体">明</span></p>
            </td>
        </tr>
        <tr>
            <td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 9.9pt; PADDING-LEFT: 9.9pt; PADDING-BOTTOM: 0cm; WIDTH: 105pt; BORDER-TOP-STYLE: none; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT-STYLE: none" valign="top" width="140">
            <p class="a4" style="MARGIN-LEFT: 10.7pt"><span lang="EN-US">UnitsInStock &gt; 50</span></p>
            </td>
            <td style="PADDING-RIGHT: 9.9pt; PADDING-LEFT: 9.9pt; PADDING-BOTTOM: 0cm; WIDTH: 331.7pt; BORDER-TOP-STYLE: none; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none" valign="top" width="442">
            <p class="a4" style="MARGIN-LEFT: 10.7pt"><span style="FONT-FAMILY: 宋体">只显示</span><span lang="EN-US">UnitsInStock</span><span style="FONT-FAMILY: 宋体">列大于</span><span lang="EN-US">50</span><span style="FONT-FAMILY: 宋体">的行</span></p>
            </td>
        </tr>
        <tr>
            <td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 9.9pt; PADDING-LEFT: 9.9pt; PADDING-BOTTOM: 0cm; WIDTH: 105pt; BORDER-TOP-STYLE: none; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT-STYLE: none" valign="top" width="140">
            <p class="a4" style="MARGIN-LEFT: 10.7pt"><span lang="EN-US">Client = 'Smith'</span></p>
            </td>
            <td style="PADDING-RIGHT: 9.9pt; PADDING-LEFT: 9.9pt; PADDING-BOTTOM: 0cm; WIDTH: 331.7pt; BORDER-TOP-STYLE: none; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none" valign="top" width="442">
            <p class="a4" style="MARGIN-LEFT: 10.7pt"><span style="FONT-FAMILY: 宋体">只返回给定客户的记录</span></p>
            </td>
        </tr>
        <tr>
            <td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 9.9pt; PADDING-LEFT: 9.9pt; PADDING-BOTTOM: 0cm; WIDTH: 105pt; BORDER-TOP-STYLE: none; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT-STYLE: none" valign="top" width="140">
            <p class="a4" style="MARGIN-LEFT: 10.7pt"><span lang="EN-US">County LIKE 'C*'</span></p>
            </td>
            <td style="PADDING-RIGHT: 9.9pt; PADDING-LEFT: 9.9pt; PADDING-BOTTOM: 0cm; WIDTH: 331.7pt; BORDER-TOP-STYLE: none; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none" valign="top" width="442">
            <p class="a4" style="MARGIN-LEFT: 10.7pt"><span style="FONT-FAMILY: 宋体">返回</span><span lang="EN-US">County</span><span style="FONT-FAMILY: 宋体">字段以</span><span lang="EN-US">C</span><span style="FONT-FAMILY: 宋体">开头的所有记录<span style="LETTER-SPACING: -1pt">&mdash;&mdash;</span></span><span lang="EN-US" style="LETTER-SPACING: -1pt">&nbsp; </span><span style="FONT-FAMILY: 宋体">例如返回</span><span lang="EN-US">Cornwall</span><span style="FONT-FAMILY: 宋体">、</span><span lang="EN-US"> Cumbria</span><span style="FONT-FAMILY: 宋体">、</span><span lang="EN-US">Cheshire</span><span style="FONT-FAMILY: 宋体">和</span><span lang="EN-US"> Cambridgeshire</span><span style="FONT-FAMILY: 宋体">所在的行,可以使用%表示匹配一个字符的通配符,而</span><span lang="EN-US">*</span><span style="FONT-FAMILY: 宋体">表示匹配</span><span lang="EN-US">0</span><span style="FONT-FAMILY: 宋体">个或多个字符的通配符</span></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">运行环境尽可能在过滤表达式中使用与源列相匹配的数据类型。例如,在前面的示例中,使用</span><span lang="EN-US">UnitsInStock &gt; '50'</span><span style="FONT-FAMILY: 宋体">表达式就是合法的,尽管该列是一个整数列。但如果提供了一个无效的过滤字符串,就会产生</span><span class="codeintext-PRODUCTION"><span lang="EN-US" style="FONT-FAMILY: 'Times New Roman'">EvaluateException</span></span><span class="codeintext-PRODUCTION"><span style="FONT-FAMILY: 宋体">。</span></span></p>
<p class="MsoNormal"><span lang="EN-US">(2) </span><span style="FONT-FAMILY: 宋体">根据状态过滤数据行</span></p>
<p class="MsoNormal"><span lang="EN-US">DataView</span><span style="FONT-FAMILY: 宋体">中的每一行都有一个定义好的行状态,它们的值如表</span><span lang="EN-US">22-2</span><span style="FONT-FAMILY: 宋体">所示,这些状态也可以用于过滤用户查看的行。</span></p>
<p class="a5" style="MARGIN-TOP: 8.15pt"><span style="FONT-FAMILY: 黑体">表</span><span lang="EN-US">&nbsp; 22-2</span></p>
<div align="center">
<table class="MsoNormalTable" style="MARGIN-LEFT: 8.2pt; BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-COLLAPSE: collapse; BORDER-BOTTOM-STYLE: none" cellspacing="0" cellpadding="0" border="1">
    <tbody>
        <tr>
            <td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 9.9pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 9.9pt; BORDER-LEFT-WIDTH: 1pt; BORDER-LEFT-COLOR: windowtext; PADDING-BOTTOM: 0cm; WIDTH: 132.1pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid" valign="top" width="176">
            <p class="a2"><span lang="EN-US">DataViewRowState</span></p>
            </td>
            <td style="PADDING-RIGHT: 9.9pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 9.9pt; PADDING-BOTTOM: 0cm; WIDTH: 301.95pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none" valign="top" width="403">

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?