当关联的数据库值在 int-Ext.Net 中时,如何在网格面板列中显示文本(字符串)?

Posted

技术标签:

【中文标题】当关联的数据库值在 int-Ext.Net 中时,如何在网格面板列中显示文本(字符串)?【英文标题】:How to display texts(string) in gridpanel column when the associated database value is in int- Ext.Net? 【发布时间】:2014-03-07 07:43:23 【问题描述】:

我有一个带有 Status 列的网格面板,如下所示:

<ext:ModelField Name="Status" Type="String" />

我有一个 sql 表,其中有一列 Statusint,它可以包含值“1”和“2”,意思是“待定”和“已确认”。现在,当我绑定网格面板时,列显示数值(1 或 2)但是,我想为 1 显示 Pending 并为 Confirmed 2 列状态。我怎样才能做到这一点?我被卡住了。

【问题讨论】:

【参考方案1】:

为显示表示添加额外的 ModelField 是一种可能的解决方案。

另一种是使用列的渲染器。

示例

<%@ Page Language="C#" %>

<%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>

<script runat="server">
    protected void Page_Load(object sender, EventArgs e)
    
        if (!X.IsAjaxRequest)
        
            Store store = this.GridPanel1.GetStore();
            store.DataSource = new object[] 
             
                new object[]  "test", "1" ,
                new object[]  "test", "2" ,
                new object[]  "test", "3" 
            ;
        
    
</script>

<!DOCTYPE html>

<html>
<head runat="server">
    <title>Ext.NET v2 Example</title>
</head>
<body>
    <form runat="server">
        <ext:ResourceManager runat="server" />
        <ext:GridPanel ID="GridPanel1" runat="server">
            <Store>
                <ext:Store runat="server">
                    <Model>
                        <ext:Model runat="server">
                            <Fields>
                                <ext:ModelField Name="test" />
                                <ext:ModelField Name="status" />
                            </Fields>
                        </ext:Model>
                    </Model>
                </ext:Store>
            </Store>
            <ColumnModel runat="server">
                <Columns>
                    <ext:Column runat="server" Text="Test" DataIndex="test" />
                    <ext:Column runat="server" Text="Status" DataIndex="status">
                        <Renderer Handler="if (value === '1')  
                                               return 'Status 1'; 
                                            else if (value === '2') 
                                               return 'Status 2';
                                            else 
                                               return 'Unknown status';
                                           " />
                    </ext:Column>
                </Columns>
            </ColumnModel>
        </ext:GridPanel>
    </form>
</body>
</html>

【讨论】:

【参考方案2】:

哦,我通过创建 sql 表的部分类并添加属性 Statuss 以某种方式解决了这个问题,如下所示:

public partial class tblName
    
        public string Statuss
        
            get;
            set;
        
    

并像修改模型一样

<ext:ModelField Name="Statuss" Type="String" />

然后在数据绑定部分,我使用 linq 添加了 if-else 部分

if(tbl_entity.Status==1)

   tbl_entity.Statuss = "Pending";

else

   tbl_entity.Statuss = "Confirmed";

目前,它以某种方式解决了问题,但如果这不是正确的方法或最好的方法,我们随时欢迎您的回答。谢谢。

【讨论】:

以上是关于当关联的数据库值在 int-Ext.Net 中时,如何在网格面板列中显示文本(字符串)?的主要内容,如果未能解决你的问题,请参考以下文章

当用户旋转手机并将所有数据保留在 ArrayAdapter 中时,保留列表视图项的良好解决方案

Pandas:仅当某个列值在过去 N 个月内出现 N 次时才保留行

MyBatisMacBook 配置 mapper.xml 中时如何让 SQL 语句自动关联到 MySQL 数据库

为啥当我输入整数数据时,它的值在 Codeigniter 中总是四舍五入

C语言strcpystrlen的模拟实现

根据“不在”条件从数据框中删除行[重复]