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

У меня есть gridpanel со столбцом Статус следующим образом:

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

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


person FREAKYHUNTER    schedule 07.03.2014    source источник


Ответы (2)


Одним из возможных решений является наличие дополнительного поля 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>
person Daniil Veriga    schedule 12.03.2014

О, я каким-то образом решил это, создав частичный класс таблицы 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";
}

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

person FREAKYHUNTER    schedule 07.03.2014