是否可以将未绑定的列插入绑定的datagridview?

Posted

技术标签:

【中文标题】是否可以将未绑定的列插入绑定的datagridview?【英文标题】:Is it possible to insert unbound column into a bound datagridview? 【发布时间】:2014-06-16 21:20:00 【问题描述】:

我有一个 datagridview,绑定到数据并运行良好。两列中的数据是整数,但它们的含义是我希望表单用户看到的。

Column 1       Column 2       Column 3       Column 4
_____________________________________________________
Bob            1              2               Yes
Mary           1              3               No
Tod            2              2               No
Beth           3              3               Yes

其中 1、2 和 3 类似于工作技能。所以我想隐藏第 2 列和第 3 列,并在 SQL 中来回解释。

Column 1       Column 2       Column 3       Column 2a        Column 3a        Column 4
_______________________________________________________________________________________
Bob            1              2              Accounting      Admin            Yes
Mary           1              3              Accounting      Manager          No
Tod            2              2              Architect       Admin            No
Beth           3              3              IT              Manager          Yes

想象一下第 2 列和第 3 列是隐藏的,也许 2a 和 3a 是组合框,它们背后有将字符串转换为整数的代码。

项目太大,无法修复它以首先使用字符串。我愿意接受其他建议,例如制作 Columns 2 & 3 组合框,这些组合框既是数据绑定的,又是基于另一个 SQL 命令的函数。但我看不出它是如何工作的。

【问题讨论】:

【参考方案1】:

来自Data Binding with Windows Forms 2.0: Programming Smart Client Data Applications with .NET:

有两种主要的方式来填充 unbound 的内容 列:处理RowsAdded 事件或处理CellFormatting 事件。前者是设置单元格值的好地方 以后可用于程序化检索。后者是个好地方 提供一个仅用于显示目的的值,并且 不会存储为网格单元保留的数据的一部分 收藏。 CellFormatting 事件也可用于转换 值,因为它们在单元格中呈现为不同于 实际存储在位于网格后面的数据中的值。

【讨论】:

听起来像一个巧妙的解决方案。我会调查的。 m_CustomersGrid.CellFormatting += OnCellFormatting; m_CustomersGrid.RowsAdded += OnRowsAdded; 如何在 VB.net 中执行此操作?我不认识这个。 @ZL1Corvette 不是事件处理程序***.com/questions/12242628/…【参考方案2】:

是的,这是可能的。

先设置AutoGenerateColumns="False",然后添加TemplateFields

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" >
    <Columns>
        <asp:boundfield datafield="Column1"  HeaderText="Column 1"  SortExpression="Column1"/>
        <asp:boundfield datafield="Column2"  HeaderText="Column 2"  SortExpression="Column2"/>
        <asp:TemplateField HeaderText="Column 4">
            <ItemTemplate>    
               <asp:CheckBox ID="CheckBox1" runat="server" />
            </ItemTemplate>
        </asp:TemplateField>
        <asp:boundfield datafield="Column3"  HeaderText="Column 3"  SortExpression="Column3"/>
    </Columns>
</asp:GridView>

然后,您可以在 GridView1_RowDataBound 方法期间更改每个 TemplateField 的值。

【讨论】:

以上是关于是否可以将未绑定的列插入绑定的datagridview?的主要内容,如果未能解决你的问题,请参考以下文章

将未绑定的python函数存储在类对象中

Snowflake 中的列绑定变量

如何使用 Entity Framework 将多个表中的数据绑定到 datagridview 并使用 CRUD 操作?

带有核心数据的 Cocoa 绑定不更新所有列

是否使用绷定变量的一些建议

OTL4.0 otl_stream 绑定问题