我有一个ASP.NET搜索页面,在单击“搜索”按钮后显示SQL绑定的ListView。在EmptyDataTemplate中,我根据他们在邮件中搜索到的ID获得了一个asp标签。 “没有找到”有点儿的结果。“
这是按钮点击的原始代码隐藏:
protected void btnSearch_Command(object sender, CommandEventArgs e)
{
Label lbl = (Label)lvMatOrders.Controls[0].Controls[0].FindControl("lblProjectID");
if (lbl != null) // this means EmptyDataTemplate is used, else ItemTemplate
{
if (string.IsNullOrEmpty(txtProjectID.Text))
{
lbl.Text = "#####";
}
else
{
lbl.Text = txtProjectID.Text;
}
}
}
我是否理解我可以将其减少到以下内容?
Label lbl = (Label)lvMatOrders.Controls[0].Controls[0].FindControl("lblProjectID");
lbl?.Text = (string.IsNullOrEmpty(txtProjectID.Text)) ? "#####" : txtProjectID.Text;
这里的主要目标是确保如果页面已经包含先前搜索的结果,则尝试将“#####”或txtProjectID.Text分配给lbl.Text的代码不会被执行显示为页面未显示EmptyDataTemplate,因此没有lblProjectID来分配文本。
如果页面处于ItemTemplate模式,是否会尝试lbl?.Text
行?
答案 0 :(得分:3)
不,代码甚至不会编译,您将收到错误"作业的左侧必须是变量,属性或索引器"
您不能在等号的左侧使用.?
运算符,只能在右侧使用。