100165632.htm
来自「C#高级编程(第三版),顶死你们。。 。up」· HTM 代码 · 共 232 行 · 第 1/3 页
HTM
232 行
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">生成的</span><span lang="EN-US"> ProductRow </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">public class ProductRow : DataRow</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; LINE-HEIGHT: 15pt; FTEL: 18.45pt"><span lang="EN-US">{</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; LINE-HEIGHT: 15pt; FTEL: 18.45pt"><span lang="EN-US"> private ProductDataTable tableProduct;</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; LINE-HEIGHT: 15pt; FTEL: 18.45pt"><span lang="EN-US"> internal ProductRow(DataRowBuilder rb) : base(rb)</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; LINE-HEIGHT: 15pt; FTEL: 18.45pt"><span lang="EN-US"> {</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; LINE-HEIGHT: 15pt; FTEL: 18.45pt"><span lang="EN-US"> this.tableProduct = ((ProductDataTable)(this.Table));</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; LINE-HEIGHT: 15pt; FTEL: 18.45pt"><span lang="EN-US"> }</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; LINE-HEIGHT: 15pt; FTEL: 18.45pt"><span lang="EN-US"> public string Name { ... }</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; LINE-HEIGHT: 15pt; FTEL: 18.45pt"><span lang="EN-US"> public bool IsNameNull { ... }</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; LINE-HEIGHT: 15pt; FTEL: 18.45pt"><span lang="EN-US"> public void SetNameNull { ... }</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; LINE-HEIGHT: 15pt; FTEL: 18.45pt"><span lang="EN-US"> // Other accessors/mutators omitted for clarity</span></p>
<p class="2" style="MARGIN-TOP: 0cm; MARGIN-LEFT: 21.45pt; MARGIN-RIGHT: 0cm; FTEL: 18.45pt"><span lang="EN-US">}</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: 17pt"><span style="FONT-FAMILY: 宋体">把属性添加到元素上时,就会把一个特性添加到生成的</span><span lang="EN-US">DataRow</span><span style="FONT-FAMILY: 宋体">类上,如上述代码所示。该特性与属性有相同的名称,所以在上面的示例中,</span><span lang="EN-US">Product</span><span style="FONT-FAMILY: 宋体">行包含</span><span class="codeintext-PRODUCTION"><span lang="EN-US" style="FONT-FAMILY: 'Times New Roman'">Name</span></span><span style="FONT-FAMILY: 宋体">、</span><span class="codeintext-PRODUCTION"><span lang="EN-US" style="FONT-FAMILY: 'Times New Roman'">SKU</span></span><span style="FONT-FAMILY: 宋体">、</span><span class="codeintext-PRODUCTION"><span lang="EN-US" style="FONT-FAMILY: 'Times New Roman'">Description</span></span><span class="codeintext-PRODUCTION"><span style="FONT-FAMILY: 宋体; LETTER-SPACING: 0.2pt">和</span></span><span class="codeintext-PRODUCTION"><span lang="EN-US" style="FONT-FAMILY: 'Times New Roman'">Price</span></span><span class="codeintext-PRODUCTION"><span style="FONT-FAMILY: 宋体">特性。</span></span></p>
<p class="MsoNormal" style="LINE-HEIGHT: 17pt"><span style="FONT-FAMILY: 宋体">对于每个新添加的属性,都对</span><span lang="EN-US">.cs</span><span style="FONT-FAMILY: 宋体">文件进行了几处修改。在下面的示例中,假定添加了一个类型为</span><span lang="EN-US">int</span><span style="FONT-FAMILY: 宋体">的属性</span><span lang="EN-US">ProductId</span><span style="FONT-FAMILY: 宋体">。</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: 17pt"><span style="FONT-FAMILY: 宋体">首先给</span><span lang="EN-US">ProductDataTable</span><span style="FONT-FAMILY: 宋体">类</span><span lang="EN-US">(</span><span style="FONT-FAMILY: 宋体">派生于</span><span lang="EN-US">DataTable)</span><span style="FONT-FAMILY: 宋体">添加一个私有成员,即新的</span><span lang="EN-US">DataColumn</span><span style="FONT-FAMILY: 宋体">:</span></p>
<p class="2" style="MARGIN-TOP: 9.8pt; MARGIN-LEFT: 21.45pt; MARGIN-RIGHT: 0cm; FTEL: 18.45pt"><span lang="EN-US">private DataColumn columnProductId;</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">用属性</span><span lang="EN-US">ProductIDColumn</span><span style="FONT-FAMILY: 宋体">来连接,这个属性被定义为</span><span lang="EN-US">internal</span><span style="FONT-FAMILY: 宋体">:</span></p>
<p class="2" style="MARGIN-TOP: 9.8pt; MARGIN-LEFT: 21.45pt; MARGIN-RIGHT: 0cm; FTEL: 18.45pt"><span lang="EN-US">internal DataColumn ProductIdColumn</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; LINE-HEIGHT: 15pt; FTEL: 18.45pt"><span lang="EN-US">{</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; LINE-HEIGHT: 15pt; FTEL: 18.45pt"><span lang="EN-US"> get { return this.columnProductId; }</span></p>
<p class="2" style="MARGIN-TOP: 0cm; MARGIN-LEFT: 21.45pt; MARGIN-RIGHT: 0cm; FTEL: 18.45pt"><span lang="EN-US">}</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: 17pt"><span style="FONT-FAMILY: 宋体">上面的</span><span lang="EN-US">AddProductRow()</span><span style="FONT-FAMILY: 宋体">方法也做了修改,该函数现在带有一个整型参数</span><span lang="EN-US">ProductID</span><span style="FONT-FAMILY: 宋体">,并存储了在新建列中输入的值:</span></p>
<p class="2" style="MARGIN-TOP: 9.8pt; MARGIN-LEFT: 21.45pt; MARGIN-RIGHT: 0cm; FTEL: 18.45pt"><span lang="EN-US">public ProductRow AddProductRow ( ... , int ProductId)</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; LINE-HEIGHT: 15pt; FTEL: 18.45pt"><span lang="EN-US">{</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; LINE-HEIGHT: 15pt; FTEL: 18.45pt"><span lang="EN-US"> ProductRow rowProductRow = ((ProductRow)(this.NewRow()));</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; LINE-HEIGHT: 15pt; FTEL: 18.45pt"><span lang="EN-US"> rowProductRow.ItemArray = new Object[] { ... , ProductId};</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; LINE-HEIGHT: 15pt; FTEL: 18.45pt"><span lang="EN-US"> this.Rows.Add(rowProductRow);</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; LINE-HEIGHT: 15pt; FTEL: 18.45pt"><span lang="EN-US"> return rowProductRow;</span></p>
<p class="2" style="MARGIN-TOP: 0cm; MARGIN-LEFT: 21.45pt; MARGIN-RIGHT: 0cm; FTEL: 18.45pt"><span lang="EN-US">}</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">最后在</span><span lang="EN-US">ProductDataTable</span><span style="FONT-FAMILY: 宋体">中修改</span><span lang="EN-US">InitClass()</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">private void InitClass()</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">{</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> ...</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> this.columnProductID = new DataColumn("ProductID", typeof(int), null, </span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> System.Data.MappingType.Attribute);</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> this.Columns.Add(this.columnProductID);</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> this.columnProductID.Namespace = "";</span></p>
<p class="2" style="MARGIN-TOP: 0cm; MARGIN-LEFT: 21.45pt; MARGIN-RIGHT: 0cm; FTEL: 18.45pt"><span lang="EN-US">}</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">这段代码创建了新的</span><span lang="EN-US">DataColumn</span><span style="FONT-FAMILY: 宋体">,并把它添加到</span><span lang="EN-US">DataTable</span><span style="FONT-FAMILY: 宋体">的</span><span lang="EN-US">Columns</span><span style="FONT-FAMILY: 宋体">集合中。</span><span lang="EN-US">DataColumn</span><span style="FONT-FAMILY: 宋体">构造函数的最后一个参数定义了在把</span><span lang="EN-US">DataSet</span><span style="FONT-FAMILY: 宋体">保存到</span><span lang="EN-US">XML</span><span style="FONT-FAMILY: 宋体">文件中时,该列如何映射回</span><span lang="EN-US">XML</span><span style="FONT-FAMILY: 宋体">上。</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">更新</span><span lang="EN-US">ProductRow</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">public int ProductId</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">{</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> get { return ((int)(this[this.tableProduct.ProductIdColumn])); }</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> set { this[this.tableProduct.ProductIdColumn] = value; }</span></p>
<p class="2" style="MARGIN-TOP: 0cm; MARGIN-LEFT: 21.45pt; MARGIN-RIGHT: 0cm; FTEL: 18.45pt"><span lang="EN-US">}</span></p>
<h4 style="FTEL: 21.45pt"><span lang="EN-US">4. </span><span style="FONT-FAMILY: 黑体">生成的</span><span lang="EN-US">EventArgs</span></h4>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">最后一个添加到源代码中的类是</span><span lang="EN-US">EventArgs</span><span style="FONT-FAMILY: 宋体">的一个派生类,它提供的方法可以直接访问已经改变</span><span lang="EN-US">(</span><span style="FONT-FAMILY: 宋体">或者正在改变</span><span lang="EN-US">)</span><span style="FONT-FAMILY: 宋体">的行,以及应用到该行上的操作。这里为了简洁起见,省略了这段代码。</span></p></div>
<!-- page -->
<div class="page" style="text-align: center">
<a href="100165631.htm">上一页</a> <a href="index.html">首页</a> <a href="100165633.htm">下一页</a>
</div>
<div style="margin: 0px auto; width: 700px; border: solid 1px #0b5f98;">
<div style="float: left; width: 16px; background-color: #0b5f98; color: White; padding: 1px;">
图书导读
</div>
<div style="float: right; width: 670px; text-align: left; line-height: 16pt; padding-left: 2px">
<!--导读-->
<h1 id="divCurrentNode2" style="color: #b83507; width: 100%; text-align: left; font-size: 12px; padding-left: 2px">当前章节:<a href='100165632.htm'><font color='red'>22.3.5 构建模式</font></a></h1>
<div id="divRealteNod2" style="padding-left: 2px">
<div style='float:left;width:49%'>·<a href='100165629.htm'>22.3.2 选择数据</a></div><div style='float:right;width:49%'>·<a href='100165630.htm'>22.3.3 生成DataSet</a></div><div style='float:left;width:49%'>·<a href='100165631.htm'>22.3.4 更新数据源</a></div><div style='float:right;width:49%'>·<a href='100165633.htm'>22.3.6 其他常见的要求</a></div><div style='float:left;width:49%'>·<a href='100165634.htm'>22.4 小结</a></div><div style='float:right;width:49%'>·<a href='100165635.htm'>23.1 .NET支持的XML标准</a></div></div>
</div>
</div>
</div>
<!-- 评论 -->
<!-- 今日推荐 -->
</div>
<!-- 页脚 -->
<div id="foot">
<img src="../../book/readbook.aspx@node=5632&bookid=16&bookname=22.3.5++_25b9_25b9_25bd_25a8_25c4_25a3_25ca_25bd" alt="" width="0" height="0" />
<style>
</div>
</body>
</html>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?