Datagridview cell validating cancel

Rated 3.84/5 based on 674 customer reviews

Auto Resize Row(0, Data Grid View Auto Size Row Mode. Auto Resize Rows() c,临时的,让行头和列头自动调整 // 列头高度自动调整 Data Grid View1. Value Member = "Stu Num"; ((Data Grid View Combo Box Cell)dgv Student List. Auto Size Mode = Data Grid View Auto Size Column Mode. Parse Formatted Value(int row Index)方法控制。 默认情况下,会再次使用Type Converter来将Formatted Value解析为单元格的真实值,这时会触发Data Grid View的Cell Parsing事件,这时你就有机会修改单元格的解析方式了。. 充它的宽度控制方法。 大小时自动调整单元格内容的变化,以避免裁减和优化使用空间。设置一个自动调整大小属性的值,表示一个基于内容的大小调整模式。为了避免性能下降时,大量的数据工作,使用一个尺寸模式,只计算显示的行。 调整大小以适应显示的行值,以避免性能下降时,许多行工作。使用自动或编程调整大小适当的调整大小模式枚举值。要调整大小,以适应在新显示的行滚动时,请在一个滚动的事件处理程序大小的方法价值。定制用户双击调整大小,以便显示的行的值只有在确定新的尺寸,要求在一个Row Divider Double Click或Column Divider Double Click事件处理程序大小的方法。 只有在特定时间调整大小以适应单元格内容,以避免性能罚款或启用用户调整大小。调用事件处理程序中的基于内容的大小的方法。例如,使用Data Binding Complete事件绑定后初始化大小和处理Cell Validated或Cell Value Changed事件调整大小,以弥补用户编辑或绑定的数据源的变化。 调整多行单元格内容的行高。确保该列的宽度是用于显示相应的文本段落并使用自动或编程的基于内容的行大小来调整高度。另外,还要确保与细胞显示多内容使用的Wrap Mode细胞式的真实价值。 通常,你会使用自动调整大小模式,以维持列列宽或将其设置为特定宽度前行高进行调整。 5.3.2用鼠标调整大小 默认情况下,用户可以调整行,列和标题不使用自动大小调整模式对细胞价值观为基础。为了防止其他模式,例如列填充模式,缩放用户设置一个或以下的Data Grid View属性: ? 要确定是否所有在Data Grid View单元格已被选中,然后再访问该Selected Cells集合的内容,检查Are All Cells Selected方法的返回值。请注意,但是,这种方法可能会导致行成为非共享。有关详细信息,请参阅下一节。 ?

All Cells);上面调用的 Auto Resize Rows 和 Auto Resize Row 当指定的是Data Grid View Auto Size Row Mode. Auto Resize Column Headers Height(); // 行头宽度自动调整 Data Grid View1. Data Source = list; ((Data Grid View Combo Box Cell)dgv Student List. All Cells; 这就搞定了,效果就是列宽会根据内容以及表头宽度自行判断,最后调整到合适的宽度。 Auto Size Mode这个属性并不显示在“属性”窗口中。 如果你的Data Grid View是动态绑定数据的, 那就只能在代码中设置。 如果你的Data Grid View列名是设计好的,那么可以在Data Grid View上点击右键,选择“编辑列”,然后选中你要设置自适应的列,在它的属性列表中的“布局”选项卡里面选择Auto Size Mode的类型。 Auto Size Mode属性可以设置的值还有不少: 成员名称 说明 Not Set 列的大小调整行为从Data Grid View. 如果单元格不能得到正确地解析,会触发Data Error事件。 Data Grid View Text Box Column是一种通用的列类型,用于表示基于文本的值,比如数字和字符串。在编辑模式下,会有一个Text Box控件出现在当前活动单元格,用户可以修改单元格的值。 单元格的值在显示时会自动转换为字符串。用户输入或修改的值在提交时则被自动解析为合适的数据类型以创建一个单元格的值。通过处理Cell Foamatting和Cell Parsing事件,你可以自定义这些转换的方式。比如将数据源的日期字段以特定的形式显示,对某些特殊单元格作出特殊的标记。 一般情况下,Check Box类型的单元格要么用于存储数据,就像其它类型的数据一样,要么用于进行一些重要操作。用户点击Check Box单元格时,如果你希望对此立即做出反应,可以处理Cell Click事件,但该事件发生在单元格的值更新之前。如果点击之时就希望获得新值,一种选择是根据当前值计算点击后的值;另一种方法是立即提交值的变化,然后在Cell Value Changed事件处理函数中对此作出反应,而要在用户点击单元格时立即提交值的变化,你必须处理Current Cell Dirty State Changed事件,在这里,调用Commit End方法提交新值。 3.3 Data Grid View Image Column Data Grid View Image Column 类型的列用于显示图像。这种类型的列有三种方法生成:绑定到数据源时自动生成;为非绑定列手动生成;在Cell Formatting事件处理函数(该事件发生在单元格显示前)中动态生成。 绑定到数据源时自动生成Image列的方法适用于大量的图像格式,包括. 避免使用的Data Grid View Selected Cell Collection Count属性来确定所选细胞的数量。相反,使用Get Cell Count()方法并传入Data Grid View Element States.

All Cells);上面调用的 Auto Resize Columns 和 Auto Resize Column 当指定的是Data Grid View Auto Size Column Mode. Auto Resize Rows(Data Grid View Auto Size Rows Mode. Get Value() 方法来控制。 默认情况下,单元格的值的类型为object。当一个列被绑定后,会设置它的Value Type属性,它包含的单元格的Value Type也随之更新。而单元格的Value Type对于下一步的格式化非常重要。 格式化显示(Formatting for Display) 注意:当Data Grid View需要了解“如何显示这个单元格”时,它需要的是单元格的Formatted Value ,而不是Value。这是一个复杂的过程,因为格式化屏幕上的一些内容通常需要将它转换为字符串。例如,尽管你将单元格的值(Value)设置为整型值155,在显示它的时候仍需要将其格式化。单元格和其所在的列的Formatted Value Type 属性决定了显示它时所用的类型。多数列使用字符串类型,而Image和Check Box类型的单元格/列则使用其它类型。Image类型的单元格和列使用Image作为默认的Formatted Value Type,它的内置实现了解如何去显示一个Image。Check Box类型的单元格/列的Formatted Value Type属性则取决于属性Three State的值。在单元格级,所有这些由Data Grid View Cell. Error Icon); 或者,也可以让自己和油漆的细胞中添加一个自定义事件处理程序的Data Grid View. Row Post Paint前景的内容。您还可以禁用油漆和涂料的一切细胞在Data Grid View. Row Pre Paint自己的事件处理程序 5.3 Autosizing Data Grid View控件提供了自定义的列和行的调整大小行为的许多选项。通常情况下,Data Grid View单元格不调整的基础上的内容。相反,她们还会给任何显示值比电池大。如果内容可以作为一个字符串显示,该单元格显示在工具提示。 默认情况下,用户可以用鼠标拖动来显示更多信息行,列和标题分隔。用户还可以双击一个分频器来自动调整相关的行,列或标题带其内容为基础。列共享默认情况下,控制可用宽度?? Row Headers Width Size Mode 您还可以防止大小设置其Resizable属性由单个行或列的用户。默认情况下,Resizable属性值是基于对列Allow User To Resize Columns属性值和属性值的行Allow User To Resize Rows。如果你明确地设置大小可调整为True或False,但是,指定的值控制值覆盖该行或列中。设置调整大小to Not Set恢复继承。 由于Not Set还原值继承,Resizable属性永远不会返回Not Set值,除非该行或列并没有被添加到一个Data Grid View控制。如果您需要确定是否行或列Resizable属性值继承,审查其国家的财产。如果该国值包括Resizable Set标志,Resizable属性值不继承。 5.3.3自动调整大小 有两种自动调整大小在Data Grid View控制类型:列填充模式和基于内容的自动调整大小。 列填充模式导致在控件中可见列,以填补该控件的显示区域的宽度。如需这个模式的详细信息,请参阅列填充模式一节。 您还可以配置行,列和标题的大小自动调整以适应其单元格内容。在这种情况下,大小调整单元格内容时发生变化。 注意:如果你保持在自定义数据缓存单元格的值使用虚拟模式,自动调整大小时发生用户编辑单元格值,但不会发生改变时,外面的一Cell Value Pushed事件处理缓存值。在这种情况下,调用Update Cell Value方法强制控制更新单元格的显示和应用当前的自动调整大小模式。 如果基于内容的自动调整大小仅用于也就是说,对于行,但不列,或列,但不是行和的Wrap Mode还启用一维启用,大小调整时,也会发生在其他方面的变化。例如,如果行,但不列自动调整大小和配置的Wrap Mode已启用,用户可以拖动列分隔来改变一个列和行高将自动调整使细胞内容仍然充分显示宽度。 如果配置基于内容的自动调整大小行和列和的Wrap Mode启用,Data Grid View控件将调整单元格内容改变大小时,将使用一个理想的细胞高度对宽度的比例,当计算新的大小。 要配置标题和行和列不会覆盖控制值,浆纱模式设置一个或多个以下的Data Grid View属性: ? 避免使用带有大量行集的Data Grid View控制自动调整大小。如果你使用自动大小调整,只调整的基础上所显示的行。在虚拟模式下只使用所显示的行以及。 对行和列? 对于行头,使用该Data Grid View Row Headers Width Size Mode枚举Auto Size To Displayed Headers或Auto Size To First Header领域。 为了获得最大的可扩展性? 该行包含其项目属性的Data Grid View Combo Box Cell集。 在绑定模式或虚拟模式,您可以通过处理Cell Tool Tip Text Needed提供Cell Context Menu Strip Needed事件和个别细胞工具提示和快捷菜单。 Data Grid View控件将自动尝试使用共享每当行添加到Data Grid View Row Collection行。使用下面的指引,以确保行共享: ? 避免索引中的行集或通过它迭代与foreach循环。你不会通常需要直接访问行。 Data Grid View的操作方法,对行,而不是采取行实例行索引参数。此外,对于行相关的事件处理程序接收行属性,您可以用它来操作,而不会造成他们成为非共享行的事件参数对象。 ? 避免细胞为基础的选择模式。这些模式导致行成为非共享。相反,将Selection Mode属性设置Data Grid View Selection Mode. 不要调用Are All Cells Selected(布尔)方法。这种方法可能会导致行成为非共享。 ? 不要调用Select All方法当Selection Mode属性值是Cell Select。这会导致所有行成为非共享。 ?

All Cells); //让 Data Grid View1 的第一行的行高自动调整一下。 Data Grid View1. Display Member = "Stu Name"; ------------- 让Data Grid View的列宽自适应 就一行代码: Columns[i]. Get Formatted Value()控制。 默认情况下,Data Grid View使用Type Converter将单元格的值(Value)转换为格式化的值(Formatted Value)。Data Grid View会基于单元格的Value Type和Formatted Value Type属性来获取合时的Type Converter。 对于一个单元格,Formatted Value会得到多次请求(即会在多个地方用到):绘制单元格的时候,所在列根据单元格内容自动调整大小的时候,甚至是在判断鼠标是否经过单元格内容时。每次需要Formatted Value的时候,Data Grid View会触发Cell Formatting事件,这时你就有机会修改单元格的格式化显示了。 如果单元格不能获取它的格式化值,它会触发Data Error事件。 格式化显示单元格还包含以怎样的首选尺寸显示它。这个首选尺寸是由单元格的Formatted Value,填充区域(padding),附加显示和边框合并而成。 绘制单元格的显示(Painting the Display) 在获得Formatted Value 后,单元格将负责绘制它的内容。单元格决定了绘制过程所使用的正确样式(参见本文档第五章的样式部分)并进行绘制。记住:如果单元格不去绘制自己,那么该单元格将不会有任何内容得到绘制(即单元格的绘制只由它自己负责),行、列不会负责绘制任何内容,因此要确保至少要绘制单元格的背景(background),否则单元格所在的矩形区域仍然是无效的(即未经绘制)。 解析单元格的显示(Parsing the Display) 用户开始与单元格交互后,可能会编辑单元格的值。有一件事要记住,用户编辑的实际上是单元格的Formatted Value。用户提交所编辑的值时,Formatted Value需要转换回单元格的值(Value),这个过程称为解析(parsing)。在单元格级上,所有这些工作由单元格的Data Grid View Cell. ,所以,如果用户可以调整控制,例如,如果它是一个可调整大小的对接形式,他们也可以更改列的所有可用的展示空间。 Data Grid View控件提供的属性,方法和事件,使您可以自定义或禁用这些用户导向的所有行为。此外,您可以通过编程方式调整行,列和标题,以适合他们的内容,也可以将其配置为自动调整自己只要其内容的变化。 常见问题: 1)如何调整最后一列的宽度使其占据网格的剩余客户区? 5.3.1在Windows窗体Data Grid View控件调整大小选项 Data Grid View行,列和标题可以改变许多不同的事件结果的大小。下表显示了这些事件。 发生说明 用户调整大小用户可以通过拖动或双击行,列或标题分隔大小的调整。 控制调整在列填充模式,列宽度变化时,控制宽度的改变,例如,当控件停靠到其父形式和用户调整的表格。 细胞在基于内容的自动调整大小模式值的变化,大小变化,以适应新的显示值。 方法调用的方案内容为基础的大小可以让用户调整大小的基础上伺机在方法调用时单元格值。 属性设置也可以设置特定的高度和宽度值。 默认情况下,启用用户调整大小,自动调整大小被禁用,是更广泛的单元格值比列剪裁。 下表显示的情况,你可以用它来调整预设的行为,或使用特定的调整大小选项来达到特定的效果。 方案实施 使用列填充显示同样,在一列,占据了整个宽度的控制数量相对较少,而不显示水平滚动条大小的数据模式。 Auto Size Columns Mode属性设置为Fill。 使用列填充不同大小显示值模式。 Auto Size Columns Mode属性设置为Fill。初始化设置列的Fill Weight属性或调用控件Auto Resize Columns灌装后用数据控制方法相对列宽度。 使用列填充不同的重要性与价值模式。 Auto Size Columns Mode属性设置为Fill。设置大量列的Minimum Width值,必须始终显示的数据部分或使用一个尺寸的选择以外填补特定列模式。 使用列填充模式,以避免显示控件的背景。设置最后一列Auto Size Mode属性为Fill和使用其他尺寸的其他列选项。 显示一个固定宽度的列,如图标或ID列。 Auto Size Mode设置为None,可调整大小为False的列。初始化设置width属性,或者调用控件Auto Resize Column后用数据填?? ,关闭自动调整大小尺寸和使用方案。 6.4使用选定的单元格,行和列的集合高效 Selected Cells集合不执行效率大选择。收藏的Selected Rows和Selected Columns也可以是低效的,但在较小的程度,因为有许多比细胞中的行数少一个典型的Data Grid View控件,比列行少得多。为了避免性能下降与这些藏品时,请遵循下列准则: ? 避免细胞为基础的选择模式。相反,Selection Mode属性设置为Full Row Select或Full Column Select。 6.5使用共享行 实现有效的内存使用在通过共享行的Data Grid View控制。作为行会分享他们的外观和行为,尽可能通过Data Grid View Row类的共享实例的信息。 虽然共享行实例节省内存,很容易成为非共享行。例如,每当一个直接与用户交互的一个单元,它的行成为非共享。因为这是无法避免,在这个主题中的准则是有用的,只有当工作与数据量非常大,只有当用户将与每一个数据你的程序运行时间的一小部分。 阿行不能共享在未绑定的Data Grid View控制,如果它的任何单元格包含值。当Data Grid View控件绑定到外部数据源,或当您实现虚拟模式,并提供您自己的数据源,该单元格值存储以外的控制,而不是在单元格对象,允许行被共享。 行对象只能共享,如果它的所有细胞的状态可以从该行的状态和细胞列载的状态决定。如果您更改单元格的状态,这样它可以不再从它的行和列的状态推断,该行不能被共享。 例如,行不能共享在下列情形之一: ? 避免调用Add(Object []的)的添加方法和插入(对象[])的插入的行的集合方法重载超载。这些重载自动创建非共享行。 ?

Current Cell = Data Grid View1[0, 0]; 在整行选中模式开启时,你也可以通过 Current Cell 来设定选定行。 /// private void button5_Click(object sender, Event Args e) ...

X 。这对于避免取消共享行的共享非常有用。 当前的单元格可以通过设定 Data Grid View 对象的 Current Cell 来改变。可以通过 Current Cell 来设定 Data Grid View 的激活单元格。将 Current Cell 设为 Nothing(null) 可以取消激活的单元格。 // 设定 (0, 0) 为当前单元格 Data Grid View1.

datagridview cell validating cancel-67

datagridview cell validating cancel-40

datagridview cell validating cancel-29

datagridview cell validating cancel-74

Grid Color 属性来设定的。默认是 Control Dark Dark 。但是只有在 Cell Border Style 被设定为 Single、Single Horizontal、Single Vertical 的条件下才能改变其边框线的颜色。同样,Column Headers Border Style 以及 Row Headers Border Style 只有在被设定为 Single 时,才能改变颜色。 4) 单元格的上下左右的边框线式样的单独设定 Cell Border Style只能设定单元格全部边框线的式样。要单独改变单元格某一边边框式样的话,需要用到Data Grid View. Add 为 Data Grid View 追加新行。 补足: 如果 Data Grid View 的 Data Source 绑定的是 Data View, 还可以通过设置 Data View. Allow User To Delete Rows = false; 但是,通过 Data Grid View Row Collection. Read Only = true; Data Grid View 行头列头的单元格 // 改变Data Grid View1的第一列列头内容 Data Grid View1. Tool Tip Text = "该单元格的内容不能修改"; // 设定列头的单元格的Tool Tip内容 Data Grid View1. Tool Tip Text = "该列只能输入数字"; // 设定行头的单元格的Tool Tip内容 Data Grid View1. Border Style 属性来设定的。 Border Style 属性设定值是一个 Border Style 枚举: Fixed Single(单线,默认)、Fixed3D、None。 2) 单元格的边框线样式的设定 单元格的边框线的样式是通过 Data Grid View. Bottom = _ Data Grid View Advanced Cell Border Style. Inset Double 同样,设定行头单元格的属性是: Advanced Row Headers Border Style, 设定列头单元格属性是:Advanced Column Headers Border Style。 Data Grid View 单元格表示值的自定义 通过Cell Formatting事件,可以自定义单元格的表示值。(比如:值为Error的时候,单元格被设定为红色) 下面的示例:将“Colmn1”列的值改为大写。 //Cell Formatting 事件处理方法 private void Data Grid View1_Cell Formatting(object sender, Data Grid View Cell Formatting Event Args e) Cell Formatting事件的Data Grid View Cell Formatting Event Args对象的Value属性一开始保存着未被格式化的值。当Value属性被设定表示用的文本之后,把Formatting Applied属性做为True,告知Data Grid View文本已经格式化完毕。如果不这样做的话,Data Grid View会根据已经设定的Format,Null Value,Data Source Null Value,Format Provider属性会将Value属性会被重新格式化一遍。 Data Grid View 用户输入时,单元格输入值的设定 通过 Data Grid View. Read Only = true;此时,用户的新增行操作和删除行操作也被屏蔽了。 ******如果希望,Data Grid View 内某个单元格不可编辑, 那么只要: // 设置 Data Grid View1 的第2列整列单元格为只读 Data Grid View1. Read Only = true; // 设置 Data Grid View1 的第3行整行单元格为只读 Data Grid View1. Read Only = true; // 设置 Data Grid View1 的[0,0]单元格为只读 Data Grid View1[0, 0]. Value = "第一列"; // 改变Data Grid View1的第一行行头内容 Data Grid View1. Show Cell Tool Tips = True 的情况下, 单元格的 Tool Tip 可以表示出来。对于单元格窄小,无法完全显示的单元格, Tool Tip 可以显示必要的信息。 1) 设定单元格的Tool Tip内容 // 设定单元格的Tool Tip内容 Data Grid View1[0, 0]. Tool Tip Text = "该行单元格内容不能修改"; 2) Cell Tool Tip Text Needed 事件 在批量的单元格的 Tool Tip 设定的时候,一个一个指定那么设定的效率比较低, 这时候可以利用 Cell Tool Tip Text Needed 事件。当单元格的 Tool Tip Text 变化的时候也会引发该事件。但是,当Data Grid View的Data Source被指定且Virual Mode=True的时候,该事件不会被引发。 // Cell Tool Tip Text Needed事件处理方法 private void Data Grid View1_Cell Tool Tip Text Needed(object sender, Data Grid View Cell Tool Tip Text Needed Event Args e) Data Grid View 的单元格的边框、 网格线样式的设定 1) Data Grid View 的边框线样式的设定 Data Grid View 的边框线的样式是通过 Data Grid View. Left = _ Data Grid View Advanced Cell Border Style. Data Source = view; Data Grid View Text Box Column col0 = new Data Grid View Text Box Column(); col0. Value。 4.3 Data Error事件 将Data Error事件独立出来作为一个主题,是因为在操作数据时,经常会遭遇Data Error事件。在操作数据时,Data Error主要发生在一下情况:不能读/写或转换单元格的数据;在尝试进行某种编辑操作时发生了异常。 编辑操作中的Data Error 事件 下面的列表列出了可能会引发Data Error事件的编辑操作: 取消编辑(Canceling an edit) 刷新一个编辑 (通过调用Refresh Edit方法) 尝试将单元格的值写入数据源 初始化编辑控件\单元格的值(通过设置单元格的Formatted Value属性或调用单元格的Initialize Editing Control方法) 结束编辑(Ending an edit) 提交编辑(Committing an edit) 删除一行(Deleting a row) Data Error的上下文: 下面的列表显示了不同的Data Error上下文环境,然后进一步说明了这些上下文环境合适可能发生: 4.4 数据绑定模式(Databound modes) 4.4.1 非绑定模式(Unbound Mode) 如果你要在程序中管理数量相对较小的数据,那么非绑定模式会比较合适。此时你不是像绑定模式中那样将Data Grid View控件直接指向一个数据源,而是手动去生成控件。一般需要用到Data Grid View Row Collection. Add 方法(该方法向DGV中添加行)。 非绑定模式在处理静态、只读的数据时特别有用,也可以用在以自己的方式与外部数据源交互的情况,但实际上,如果你希望你的用户与外部的数据源交互,一般还是用绑定模式(bound mode)更好。 4.4.2 绑定模式(Bound Mode) 如果你在程序中管理一些数据,并希望能与数据源自动进行交互,就应该使用绑定模式。此时你可以设置Data Source属性,将数据源绑定到Data Grid View控件。如果控件使用了绑定模式,就不需要你去显式地对数据进行读写了。如果Auto Generate Columns 属性为true,数据源中的每一列都会在Data Grid View中生成一个相应的列(根据列的数据类型),如果你希望创建自己的列,可以将该属性设置为false,使用Data Property Name属性将一列绑定到数据源的一列,这在你不想用自动生成的列类型时很有用。 4.4.2.1 有效的数据源 将数据绑定到Data Grid View非常简单、直观,很多情况下,你只需要设置它的Data Source属性。如果使用的数据源包含多个列表(list)或数据表(table),你还需要设置控件的Data Member属性,该属性为字符串类型,用于指定要绑定的列表或数据表。 Data Grid View控件支持标准的Win Form数据绑定模型,因此它可以绑定到下面列表中的类的实例: 任意实现了IList接口的类,包括一维数组; 任意实现了IList Source接口的类,比如Data Table和Data Set; 任意实现了IBinding List 接口的类,比如Binding List ; 任意实现了IBinding List View接口的类,比如Binding Source 。 列表更改通知(List Change Notification) 当你将数据绑定到列表时,最重要的功能之一便是支持列表更改通知了。这只有在你希望列表(即数据源)发生变化,如添加、修改和删除,Data Grid View能够随之更新的时候,该功能才显得重要。只有实现了IBinding List接口的数据源支持更改通知。像数组和集合这样的列表默认情况下不支持更改通知。 在选择数据源时,Binding Source组件应该作为首选,因为它可以绑定到多种类型的数据源,并且能够自动处理很多数据绑定相关的事务。一般情况下,应该将Data Grid View绑定到Binding Source组件,并将Binding Source组件绑定真正的数据源(它的作用就像DGV和数据源间的桥梁)。 Binding List类也可以在一个类的基础上创建自定义列表(list)。 对象更改通知(Object Change Notification) 如果你有了一个数据源,那么数据源中的对象就可以实现对public属性的更改通知。这需要你为相应属性提供一个” Property Name Changed”事件,或者实现INotify Property Changed接口。INotify Property Changed 是在VS 2005 中新加的接口,可以与Binding List一起使用来创建可绑定的列表(list)。但当你的数据源是Binding Source ,那就不用再额外实现更改通知了。 4.4.3 虚拟模式 使用虚拟模式,你可以实现自己的数据管理操作。在绑定模式下,如果要使用非绑定列,那么要想在对列排序时能够维护非绑定列的值,就需要虚拟模式。但虚拟模式的最主要的用途还是在操作大量数据时优化性能。 你将Data Grid View绑定到缓存的数据,然后用代码控制数据行的存取。要保持使用内存量比较小,缓存的数据量应与当前要显示的行数相当。当用户滚动控件看到了新的行时,你的代码就从缓存中请求新的数据,并从内存中清除旧的数据。 如果你正要实现虚拟模式(Virtual Mode),需要考虑数据模型添加新行和回滚添加操作的情况。该功能准确的实现方式取决于数据模型的实现方式及其事务机制,例如,提交的时候是针对单元格还是行。参看本文档后面关于Virtual Mode的主题。 4.4.4 混合模式 – 绑定与非绑定模式 显示在Data Grid View中的数据通常来自于某种类型的数据源,但是你可能也希望显示一个数据源之外的列。这种列称为非绑定列。 你可以在绑定模式下添加非绑定列,在你希望显示一个按钮列或者链接列让用户操作一些特定行时这显得很有用,另外也可以用非绑定列显示一些由绑定列计算而得到的值。你可以在Cell Formatting事件处理函数中生成计算列的值。不过如果你使用的数据源是Data Set或Data Table,你可能希望使用Data Column.

Leave a Reply