我有一个包含转发器的用户控件。转发器根据创建实例时使用的参数输出一列或两列。
如果没有为第二列指定值,即只应显示一列,如果尚未设置值,它似乎不喜欢它。
我正在尝试输出在后面的用户控制代码中设置的字符串,而不是数据项。
我有以下aspx:
<%# Eval(Column2Data) == DBNull.Value ? "</tr> " : String.Format("<td>{0}</td></tr>", Eval(Column2Data))%>
如果Column2Data
有值,则会有效,但如果没有,则会显示以下错误:
Value cannot be null.
Parameter name: expression
为什么这不起作用?
答案 0 :(得分:2)
试试这个
<% (Column2Data == null) ? "</tr>td></td></tr>", Eval(Column2Data))%>
如果value为null,我认为你想呈现空td
答案 1 :(得分:2)
这就是你要找的东西:
<%# DBNull.Value.Equals(Eval(Column2Data)) ? "</tr> " : String.Format("<td>{0}</td></tr>", Eval(Column2Data))%>
答案 2 :(得分:1)
试试这个,
<%# Eval("Column2Data")==null ? "<tr><td>N.A</td></tr>"
: Eval("Column2Data","<tr><td>{0}</td></tr>")%>
这是样本列表,
public class Data
{
public int? Column2Data { get; set; }
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
List<Data> list = new List<Data>()
{
new Data(){ Column2Data=10100},
new Data(){},
new Data(){ Column2Data=4000}
};
Repeater1.DataSource = list;
Repeater1.DataBind();
}
}
答案 3 :(得分:0)
<%# (string.IsNullOrEmpty(Convert.ToString(Eval("Column2Data")))) ? "Value" :Eval("Column2Data") %>