Как отобразить текст (строку) в столбце gridpanel, когда значение соответствующей базы данных находится в Int- Ext.Net?

У меня есть сетка с колонкой Статус, как это:

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

И у меня есть таблица SQL с столбцом Status, который является int, который может содержать значения "1" и "2", что означает "Ожидание" и "Подтверждено". Прямо сейчас, когда я связываю панель сетки, столбец показывает числовые значения (1 или 2), но я хочу отобразить Ожидание для 1 и Подтверждено для 2 в столбце Статус. Как я могу это сделать? Я застрял.

2 ответа

Решение

Наличие дополнительного ModelField для отображения на экране является одним из возможных решений.

Другой способ - использовать Render из Column.

пример

<%@ 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>

О, я как-то решил эту проблему, создав частичный класс таблицы sql и добавив свойство Statuss следующим образом:

public partial class tblName
    {
        public string Statuss
        {
            get;
            set;
        }
    }

и модифицировал модель как

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

Затем в части привязки данных я добавил часть if-else, используя linq как

if(tbl_entity.Status==1)
{
   tbl_entity.Statuss = "Pending";
}
else
{
   tbl_entity.Statuss = "Confirmed";
}

Пока что это как-то решило проблему, но, если это не правильный или лучший способ сделать это, ваш ответ всегда приветствуется. Спасибо.

Другие вопросы по тегам