2015-09-27 2 views
1

У меня есть столбец в моей базе данных, который принимает истинное или ложное значение. Я хочу, чтобы отобразить его значение столбца в виде сетки и используя ниже код (мой дб имя столбца IsCancelled):представление столбца boolean db в виде сетки asp

<asp:TemplateField HeaderText="کنسل شده" SortExpression="IsCancelled"> 
           <ItemTemplate>%#Boolean.Parse(Eval("IsCancelled").ToString())) ? "Yes" : "No" %></ItemTemplate> 
          </asp:TemplateField> 

, но я получаю следующее исключение:

An exception of type 'System.NullReferenceException' occurred in App_Web_jcvfb4rq.dll but was not handled in user code

Additional information: Object reference not set to an instance of an object.

+0

Отсутствие тега открытие перед тем, как ответ напишите тег% #. Возможно, это вызывает ошибку. – Canavar

+0

Кажется, вы получаете значение NULL тоже из базы данных. –

+0

Я добавляю отсутствующий тег, но не решил <% # (Boolean.Parse (Eval («IsCancelled»). ToString()))? «Да»: «Нет»%>

ответ

1

Попробуйте ниже решения, если вы используя C#. Обратите внимание, что IIF недоступен в VB.

<asp:TemplateField HeaderText="کنسل شده" SortExpression="IsCancelled"> 
    <ItemTemplate> 
     <%#IIf(Boolean.Parse(Eval("IsCancelled").ToString()), "Yes", "No")%> 
    </ItemTemplate> 
</asp:TemplateField> 

В случае, если вы используете VB и ищет аналогичное решение, то используйте следующий код.

<asp:TemplateField HeaderText="کنسل شده" SortExpression="IsCancelled"> 
    <ItemTemplate><%# (Boolean.Parse(Eval("IsCancelled").ToString())) ? "Yes" : "No" %></ItemTemplate> 
</asp:TemplateField> 

Однако то же самое можно сделать на стороне сервера, используя приведенный ниже код.

Protected Sub GridName_RowDataBound(sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridName.RowDataBound 
    If e.Row.RowType = DataControlRowType.DataRow Then 
     If e.Row.Cells(13).Text = "True" Then 
      e.Row.Cells(13).Text = "Yes" 
     Else 
      e.Row.Cells(13).Text = "No" 
     End If 
    End If 
End Sub 
+0

У меня есть ошибка: Ошибка: невозможно преобразовать из 'объекта' в 'string' –

+0

@saeedgarmsiri Вы пытались добавить ' .ToString() '? например, 'Boolean.Parse (Eval (« IsCancelled »). ToString())' –

+0

@ Amnesh Goel да, конечно, я сделал это ... <% # (Boolean.Parse (Eval («IsCancelled»). ToString()))? «Да»: «Нет»%>

0

Вы столкнулись с этой проблемой, если отлаживаете свой код без развертывания? Я подозреваю, что вы получили эту ошибку после развертывания, потому что исключение происходит в «App_Web_XXX», который является скомпилированным файлом.

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

Как только вы подтвердите точную строку, в которой есть проблема. Вы можете попробовать следующее:

1) Проверьте и убедитесь, что столбец «IsCancelled» существует в той конкретной таблице, которую вы вызывали, и нет опечатки, поскольку имя должно совпадать.

2) Проверьте свой оператор выбора в источнике данных. Убедитесь, что ваша команда выбора способна вернуть этот столбец.

3) Не может быть релевантным, но вы можете попробовать Convert.ToInt32 и проверить, есть ли значение 1 или 0.

Поскольку ошибка не связана с проблемой каста или преобразования, возможно, она жалуется, что не может найти или прочитать «IsCancelled».

Надеюсь, это поможет.

+0

он может читать «IsCancelled», потому что, когда я пишу ниже код, он должен иметь данные столбца (если значение поля истинно, оно представляет «True» в ячейке сетки)