Как се справят с нулеви стойности (в колони) в Telerik RadGrid? (Замени с HTML)

имам BooundColumn в моя telerik RadGrid като по-долу:

                    <telerik:GridBoundColumn DataField="Status" FilterControlAltText="Filter Status column"
                        HeaderText="Status" SortExpression="Status" UniqueName="Status"
                        FilterImageToolTip="Filter">
                        <HeaderStyle HorizontalAlign="Center" VerticalAlign="Middle" />
                        <ItemStyle HorizontalAlign="Center" VerticalAlign="Middle" />
                    </telerik:GridBoundColumn>

Колоната за състояние в моята база данни на sql server 2008 може да приема нулеви стойности и RadGrid ги показва с празен низ.
как мога да заменя тези Empty Strings с Colorable Strings?
означава замяна с нещо подобно -> <span style='color: red;'>Empty</span> знам, че мога конвертирайте тази BoundColumn в TemplateColumn по този начин:

                        <telerik:GridTemplateColumn FilterControlAltText="Filter TemplateColumn_Status column"
                            HeaderText="Status" UniqueName="TemplateColumn_Status" FilterImageToolTip="Filter"
                            ReadOnly="False" Visible="False">
                            <ItemTemplate>
                                <asp:Label ID="lblStatusInsideGrd" runat="server" Font-Size="11px" Text='<%# (bool)Convert.IsDBNull(Eval("Status")) ? "<span class=\"lblInsideGrd\">Empty</span>" : Eval("Status") %>'></asp:Label>
                            </ItemTemplate>
                            <HeaderStyle HorizontalAlign="Center" VerticalAlign="Middle" />
                            <ItemStyle HorizontalAlign="Center" VerticalAlign="Middle" />
                        </telerik:GridTemplateColumn>

тази замяна е добра идея и работи чудесно. но по този начин губя RadGrid Filering в тази колона.
Бихте ли ми показали друг начин за запазване на RadGrid Friltering?

Благодаря предварително


person SilverLight    schedule 30.05.2012    source източник


Отговори (1)


Можете да направите това при събитие ItemDataBound, когато мрежата е обвързана към SqlDataSource, тъй като във вашия случай можете да получите текущия DataRow:

Актуализация: Оставих само код, който работи с DataRow, и коригирах фоновата настройка на колоната

public void TestGrid_ItemDataBound(Object sender, Telerik.Web.UI.GridItemEventArgs e)
{
  if (e.Item is GridDataItem)
  {
    if (e.Item.DataItem is DataRowView)
    {
      GridDataItem gdItem = (GridDataItem)e.Item;
      DataRow rw = ((DataRowView)e.Item.DataItem).Row;
      if (rw.IsNull("Status"))
      {
        GridColumn urlColumn = TestGrid.MasterTableView.Columns.FindByUniqueName("Status");
        gdItem.Cells[urlColumn.OrderIndex].BackColor = Color.Red;
        gdItem["Status"].Text = "Empty";
      }
    }
  }
}

РЕДАКТИРАНЕ ОТ ПИТАНИЯ
Наистина благодаря за тези кодове.
Кодовете по-долу са подходящи за мен:

protected void grdSMS_ItemDataBound(object sender, GridItemEventArgs e)
{
    if (e.Item is GridDataItem)
    {
        GridDataItem item = (GridDataItem)e.Item;
        if (item["Status"].Text == "&nbsp;")
        {
            item["Status"].ForeColor = Color.Red;
            item["Status"].Text = "Empty";
        }
    }
}
person Antonio Bakula    schedule 30.05.2012
comment
Благодаря за отговора. но как мога да променя текста (стойността) на този елемент на празен? - person SilverLight; 30.05.2012
comment
скъпи брато, нищо не се случва по твоя начин #1 и по начин #2 всички колони (включително колони с данни -› не null, включително различни от колони за състояние) стават червени. какъв е проблемът? - person SilverLight; 30.05.2012
comment
зададохте ли onitemdatabound grid събитие на този метод (RadGrid1_ItemDataBound)? - person Antonio Bakula; 30.05.2012
comment
Е, пробвах го и работи, задайте точка на прекъсване в това събитие и вижте какво се случва - person Antonio Bakula; 30.05.2012
comment
благодаря за редакцията -› този ред има грешка -› e.Item[Status].Text = Empty; (Начин 2) - person SilverLight; 30.05.2012
comment
Грешка 24 Не може да се приложи индексиране с [] към израз от тип „Telerik.Web.UI.GridItem“ F:\Programming\SMS.aspx.cs - person SilverLight; 30.05.2012
comment
съжалявам, поправено, това трябва да GridDataItem, така че трябва да го прехвърлим - person Antonio Bakula; 30.05.2012
comment
човек начин #1 не работи и по начин #2 всички колони са червени. трябва да променим нулевите колони, а не целите редове. освен това празният низ не работи. толкова объркан от тази ситуация. - person SilverLight; 30.05.2012
comment
нека да продължим тази дискусия в чата - person Antonio Bakula; 30.05.2012
comment
Сега всичко е наред - благодаря за актуализацията. - person SilverLight; 31.05.2012