我在UpdatePanel中有以下数据绑定DataList,每当从DropDown菜单中进行选择时,它就会更新。
但是,如果没有从db表中检索到任何内容,我会得到一个空白部分。
我想要做的是在ItemTemplate中显示与文本相同的表-即“找不到管理员”,“找不到电子邮件”....等用于EmptyDataTempate...
我注意到DataList不存在EmptyDataTemplate,但我不想使用不同的控件。
有没有办法做到这一点?示例代码很受欢迎。谢谢!
<asp:DataList ID="DataList" runat="server">
<ItemTemplate>
<table>
<tr>
<td class="style1">
Company Admin:
</td>
<td>
<asp:TextBox Text='<%# Eval("CompanyAdmin") %>' CssClass="input input1" ID="co_admin"
Width="150" runat="server" ReadOnly="True" />
</td>
</tr>
<tr>
<td>
Admin Email:
</td>
<td>
<asp:TextBox Text='<%# Eval("AdminEmail") %>' CssClass="input input1" ID="ad_email"
Width="150" runat="server" ReadOnly="True" />
</td>
</tr>
<tr>
<td>
Company Email:
</td>
<td>
<asp:TextBox Text='<%# Eval("CompanyEmail") %>' CssClass="input input1" ID="co_email"
Width="150" runat="server" ReadOnly="True" />
</td>
</tr>
<tr>
<td>
Telephone:
</td>
<td>
<asp:TextBox Text='<%# Eval("Telephone") %>' CssClass="input input1" ID="telephone"
Width="150" runat="server" ReadOnly="True" />
</td>
</tr>
<tr>
<td>
</td>
<td>
</td>
</tr>
</table>
</ItemTemplate>
</asp:DataList>发布于 2011-02-27 01:02:27
您可以添加一个简单的函数,该函数在字段为空时返回msg。
你可以像这样调用一个函数
<%#GetWithMsg(Container.DataItem, "CompanyEmail", "e-mail n/a")%>例如
<asp:TextBox Text='<%# GetWithMsg(Container.DataItem, "CompanyEmail", "e-mail n/a") %>' CssClass="input input1" ID="co_email"
Width="150" runat="server" ReadOnly="True" />和后面的代码。
protected string GetWithMsg(object oItem, string cField, string TheMsg)
{
var TheData = DataBinder.Eval(oItem, cField);
if(TheData == null)
return TheMsg;
else
return TheData.ToString();
}发布于 2011-02-27 02:46:14
未经过测试,但也许您可以尝试
'<%# !string.IsNullOrEmpty(Eval("CompanyEmail").ToString()) ? Eval("CompanyEmail") : "Email Not Found" %>'显式强制转换在性能方面可能比eval更好,但例如
'<%# !string.IsNullOrEmpty(((System.Data.DataRowView)Container.DataItem)["CompanyEmail"].ToString()) ? ((System.Data.DataRowView)Container.DataItem)["CompanyEmail"].ToString() : "Email Not Found" %>'希望能有所帮助
示例编辑:
protected void BindData()
{
DataTable dt = DAL.GetData(...
if(dt.Rows.Count == 0)
{
dt.Rows.Add(dt.NewRow());
}
DataList.DataSource = dt;
DataList.DataBind();
}https://stackoverflow.com/questions/5128253
复制相似问题