如何处理DataBinder.Eval()中的空值 [英] How to handle null values in DataBinder.Eval()

查看:84
本文介绍了如何处理DataBinder.Eval()中的空值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

您好,

我的aspx页面中的
我有以下代码:


< asp:Repeater id =" Repeater1" runat =" server">

< ItemTemplate>

....

<%#Server.HtmlDecode((string )DataBinder.Eval(包含r.DataItem,tekst))%>

....

< / ItemTemplate>

< / asp:Repeater>


Wherebytekst其中一列正在数据集中加载

在页面后面的代码中加载数据如下:


....

meetmate.DataLayer.Meetings m = new meetmate.DataLayer.Meetings();

ds = m.GetMeetingByID(meetingID);

dr = ds.Tables [0] .Rows [0];

DataView dv = new DataView(ds.Tables [0]);

this.Repeater1.DataSource = dv;

this.Repeater1.DataBind();

....


问题是列tekst可以为null。

在这种情况下,我收到错误

<%#Server.HtmlDecode((string)DataBinder.Eval(Conta r。 DataItem,tekst))%>

因为(字符串)强制转换然后出错。如果是tekst不是空的,没关系。


现在这只是为了tekst,而且我表中的其他列可能是

null。 br />
如何处理这是一个很好的方法?


Eddy de Boer

解决方案

在允许在您的转发器中使用值

之前,您应该使用IsDBNull(object)测试null。

" eddy de boer" < ED ******** @ discussions.microsoft.com>在消息中写道

新闻:0F ********************************** @ microsof t.com ...

你好,

在我的aspx页面中我有以下代码:

< asp:Repeater id =" ; Repeater1" runat =" server">
< ItemTemplate>
...
<%#Server.HtmlDecode((string)DataBinder.Eval(包含r.DataItem," tekst" ;))
%>
...
< / ItemTemplate>
< / asp:Repeater>

其中tekst其中一列被加载到数据集中
在代码页面后面的数据加载如下:

...
meetmate.DataLayer.Meetings m = new meetmate .DataLayer.Meetings();
ds = m.GetMeetingByID(meetingID);
dr = ds.Tables [0] .Rows [0];
DataView dv = new DataView(ds。表[0]);
this.Repeater1.DataSource = dv;
this.Repeater1.DataBind();
...

问题在于列" tekst"在这种情况下,我收到错误
<%#Server.HtmlDecode((string)DataBinder.Eval(Containe r.DataItem," tekst"))
%>
因为(字符串)强制转换然后出错了。如果是tekst不是null,它是
好的。

现在这只是为了tekst,而且我表中的其他列可能是
null。
如何我可以处理这个好方法吗?

Eddy de Boer



感谢您的回答。


但是我该怎么做?

因为如果它是null,你打算用"替换它吗?如果是

a strng,如果是整数则为0?


那么我应该在后面的代码中加入以下代码:


....
每个
(ds.Tables [i] .Rows [j] .Columns中的列cl))

{

if(cl.IsDBnull(cl))

{

if(cl.Type == DataType.Integer)

{

cl.Value = 0;

}

....

}

ds.ApplyUpdates()


这样的东西?


或者还有另一种方式吗?

Scott M.写道:

您应该在允许在您的转发器中使用相关值
之前使用IsDBNull(对象)测试null。

eddy de boer < ED ******** @ discussions.microsoft.com>在消息中写道
新闻:0F ********************************** @ microsof t.com。 ..

你好,

在我的aspx页面中我有以下代码:

< asp:Repeater id =" Repeater1" runat =" server">
< ItemTemplate>
...
<%#Server.HtmlDecode((string)DataBinder.Eval(包含r.DataItem," tekst" ;))
%>
...
< / ItemTemplate>
< / asp:Repeater>

其中tekst其中一列被加载到数据集中
在代码页面后面的数据加载如下:

...
meetmate.DataLayer.Meetings m = new meetmate .DataLayer.Meetings();
ds = m.GetMeetingByID(meetingID);
dr = ds.Tables [0] .Rows [0];
DataView dv = new DataView(ds。表[0]);
this.Repeater1.DataSource = dv;
this.Repeater1.DataBind();
...

问题在于列" tekst"在这种情况下,我收到错误
<%#Server.HtmlDecode((string)DataBinder.Eval(Containe r.DataItem," tekst"))
%>
因为(字符串)强制转换然后出错了。如果是tekst不是null,它是
好的。

现在这只是为了tekst,而且我表中的其他列可能是
null。
如何我可以处理这个好方法吗?

Eddy de Boer




< blockquote>在代码隐藏中编写一个函数并使用列参数调用函数(而不是
Server.HtmlDecode),该函数可以检查它是否是
是一个null(int或string)并返回你想要的,否则函数调用

Server.HtmlDecode。

你想通过表并更改空值将作为好吧。


" eddy de boer" < ED ******** @ discussions.microsoft.com>在留言中写道

news:62 ********************************** @ microsof t.com ...

感谢您的回答。

但是我该怎么做?
因为如果它是null,你是不是想要用替换它如果是
一个strng和一个0的整数?

然后我应该把以下代码放在后面的代码中:

...
每个(ds.Tables [i] .Rows [j] .Columns中的列cl))
{
if(cl.IsDBnull(cl))
{
if(cl.Type == DataType.Integer)
{
cl.Value = 0;
}
....
}
ds.ApplyUpdates()
这样的事情?

或者还有另一种方式吗?
Scott M.写道:

你应该使用IsDBNull(对象)测试null,然后才能在你的转发器中使用



" eddy de boer" < ED ******** @ discussions.microsoft.com>在消息中写道
新闻:0F ********************************** @ microsof t.com。 ..

>你好,
>
>在我的aspx页面中,我有以下代码:
>
> < asp:Repeater id =" Repeater1" runat =" server">
> < ItemTemplate>
> ......
> <%#
> Server.HtmlDecode((string)DataBinder.Eval(Contain r.DataItem," tekst"))
> %>
> ......
> < / ItemTemplate>
> < / asp:Repeater>
>
>因此,tekst其中一列正在加载到数据集中
>在代码隐藏页面中,数据加载如下:
>
> ......
> meetmate.DataLayer.Meetings m = new meetmate.DataLayer.Meetings();
> ds = m.GetMeetingByID(meetingID);
> dr = ds.Tables [0] .Rows [0];
> DataView dv = new DataView(ds.Tables [0]);
> this.Repeater1.DataSource = dv;
> this.Repeater1.DataBind();
> ......
>
>问题是列tekst可以为null。
>在那种情况下,我收到错误
> <%#
> Server.HtmlDecode((string)DataBinder.Eval(Contain r.DataItem," tekst"))
> %>
>因为(字符串)演员然后出错了。如果是tekst不是空的,它
>是
>好的。
>
>现在这仅适用于tekst,但我表中的其他列也可以
>是
> null。
>我怎么处理这个很好的方法呢?
>
> Eddy de Boer
>
>




Hello,

in my aspx page I have the followong code:

<asp:Repeater id="Repeater1" runat="server">
<ItemTemplate>
....
<%# Server.HtmlDecode((string)DataBinder.Eval(Containe r.DataItem,"tekst")) %>
....
</ItemTemplate>
</asp:Repeater>

Whereby "tekst" one of the columns is being loaded in the dataset
In the code behind page data is loaded as as follows:

....
meetmate.DataLayer.Meetings m = new meetmate.DataLayer.Meetings();
ds = m.GetMeetingByID(meetingID);
dr = ds.Tables[0].Rows[0];
DataView dv = new DataView(ds.Tables[0]);
this.Repeater1.DataSource = dv;
this.Repeater1.DataBind();
....

The problem is that column "tekst" can be null.
In that case, I''m getting an error on
<%# Server.HtmlDecode((string)DataBinder.Eval(Containe r.DataItem,"tekst")) %>
because the (string) cast then goes wrong. If "tekst" is not null, it is ok.

Now this is just for "tekst", but also other columns in my table could be
null.
How can I deal with this is a nice way?

Eddy de Boer

解决方案

You should test for null using IsDBNull(object) prior to allowing the value
in question to be used in your repeater.
"eddy de boer" <ed********@discussions.microsoft.com> wrote in message
news:0F**********************************@microsof t.com...

Hello,

in my aspx page I have the followong code:

<asp:Repeater id="Repeater1" runat="server">
<ItemTemplate>
...
<%# Server.HtmlDecode((string)DataBinder.Eval(Containe r.DataItem,"tekst"))
%>
...
</ItemTemplate>
</asp:Repeater>

Whereby "tekst" one of the columns is being loaded in the dataset
In the code behind page data is loaded as as follows:

...
meetmate.DataLayer.Meetings m = new meetmate.DataLayer.Meetings();
ds = m.GetMeetingByID(meetingID);
dr = ds.Tables[0].Rows[0];
DataView dv = new DataView(ds.Tables[0]);
this.Repeater1.DataSource = dv;
this.Repeater1.DataBind();
...

The problem is that column "tekst" can be null.
In that case, I''m getting an error on
<%# Server.HtmlDecode((string)DataBinder.Eval(Containe r.DataItem,"tekst"))
%>
because the (string) cast then goes wrong. If "tekst" is not null, it is
ok.

Now this is just for "tekst", but also other columns in my table could be
null.
How can I deal with this is a nice way?

Eddy de Boer



Thank you for your answer.

But how would I do that?
Because if it is null, is it your intention to replace it with "" in case of
a strng and a 0 in case of a integer?

Then I should put the following code in the code behind like:

....
for each (Column cl in ds.Tables[i].Rows[j].Columns) )
{
if (cl.IsDBnull(cl))
{
if (cl.Type == DataType.Integer)
{
cl.Value = 0;
}
....
}
ds.ApplyUpdates()

something like this?

Or is there another way?
"Scott M." wrote:

You should test for null using IsDBNull(object) prior to allowing the value
in question to be used in your repeater.
"eddy de boer" <ed********@discussions.microsoft.com> wrote in message
news:0F**********************************@microsof t.com...

Hello,

in my aspx page I have the followong code:

<asp:Repeater id="Repeater1" runat="server">
<ItemTemplate>
...
<%# Server.HtmlDecode((string)DataBinder.Eval(Containe r.DataItem,"tekst"))
%>
...
</ItemTemplate>
</asp:Repeater>

Whereby "tekst" one of the columns is being loaded in the dataset
In the code behind page data is loaded as as follows:

...
meetmate.DataLayer.Meetings m = new meetmate.DataLayer.Meetings();
ds = m.GetMeetingByID(meetingID);
dr = ds.Tables[0].Rows[0];
DataView dv = new DataView(ds.Tables[0]);
this.Repeater1.DataSource = dv;
this.Repeater1.DataBind();
...

The problem is that column "tekst" can be null.
In that case, I''m getting an error on
<%# Server.HtmlDecode((string)DataBinder.Eval(Containe r.DataItem,"tekst"))
%>
because the (string) cast then goes wrong. If "tekst" is not null, it is
ok.

Now this is just for "tekst", but also other columns in my table could be
null.
How can I deal with this is a nice way?

Eddy de Boer




Write a function in the code-behind and call the function (instead of
Server.HtmlDecode) with the column parameters, the function can check if it
is a null (int or string) and return what you want, else the function calls
Server.HtmlDecode.
Your idea of going through the table and change the nulls will work as well.

"eddy de boer" <ed********@discussions.microsoft.com> wrote in message
news:62**********************************@microsof t.com...

Thank you for your answer.

But how would I do that?
Because if it is null, is it your intention to replace it with "" in case
of
a strng and a 0 in case of a integer?

Then I should put the following code in the code behind like:

...
for each (Column cl in ds.Tables[i].Rows[j].Columns) )
{
if (cl.IsDBnull(cl))
{
if (cl.Type == DataType.Integer)
{
cl.Value = 0;
}
....
}
ds.ApplyUpdates()

something like this?

Or is there another way?
"Scott M." wrote:

You should test for null using IsDBNull(object) prior to allowing the
value
in question to be used in your repeater.
"eddy de boer" <ed********@discussions.microsoft.com> wrote in message
news:0F**********************************@microsof t.com...

> Hello,
>
> in my aspx page I have the followong code:
>
> <asp:Repeater id="Repeater1" runat="server">
> <ItemTemplate>
> ...
> <%#
> Server.HtmlDecode((string)DataBinder.Eval(Containe r.DataItem,"tekst"))
> %>
> ...
> </ItemTemplate>
> </asp:Repeater>
>
> Whereby "tekst" one of the columns is being loaded in the dataset
> In the code behind page data is loaded as as follows:
>
> ...
> meetmate.DataLayer.Meetings m = new meetmate.DataLayer.Meetings();
> ds = m.GetMeetingByID(meetingID);
> dr = ds.Tables[0].Rows[0];
> DataView dv = new DataView(ds.Tables[0]);
> this.Repeater1.DataSource = dv;
> this.Repeater1.DataBind();
> ...
>
> The problem is that column "tekst" can be null.
> In that case, I''m getting an error on
> <%#
> Server.HtmlDecode((string)DataBinder.Eval(Containe r.DataItem,"tekst"))
> %>
> because the (string) cast then goes wrong. If "tekst" is not null, it
> is
> ok.
>
> Now this is just for "tekst", but also other columns in my table could
> be
> null.
> How can I deal with this is a nice way?
>
> Eddy de Boer
>
>




这篇关于如何处理DataBinder.Eval()中的空值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆