首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DataList问题

DataList问题
EN

Stack Overflow用户
提问于 2011-02-27 00:44:16
回答 2查看 454关注 0票数 2

我在UpdatePanel中有以下数据绑定DataList,每当从DropDown菜单中进行选择时,它就会更新。

但是,如果没有从db表中检索到任何内容,我会得到一个空白部分。

我想要做的是在ItemTemplate中显示与文本相同的表-即“找不到管理员”,“找不到电子邮件”....等用于EmptyDataTempate...

我注意到DataList不存在EmptyDataTemplate,但我不想使用不同的控件。

有没有办法做到这一点?示例代码很受欢迎。谢谢!

代码语言:javascript
复制
<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>
EN

回答 2

Stack Overflow用户

发布于 2011-02-27 01:02:27

您可以添加一个简单的函数,该函数在字段为空时返回msg。

你可以像这样调用一个函数

代码语言:javascript
复制
<%#GetWithMsg(Container.DataItem, "CompanyEmail", "e-mail n/a")%>

例如

代码语言:javascript
复制
 <asp:TextBox Text='<%# GetWithMsg(Container.DataItem, "CompanyEmail", "e-mail n/a") %>' CssClass="input input1" ID="co_email"
                    Width="150" runat="server" ReadOnly="True" />

和后面的代码。

代码语言:javascript
复制
protected string GetWithMsg(object oItem, string cField, string TheMsg)
{
    var TheData = DataBinder.Eval(oItem, cField);

    if(TheData == null)
        return TheMsg;
    else
        return TheData.ToString();
}
票数 0
EN

Stack Overflow用户

发布于 2011-02-27 02:46:14

未经过测试,但也许您可以尝试

代码语言:javascript
复制
'<%# !string.IsNullOrEmpty(Eval("CompanyEmail").ToString()) ? Eval("CompanyEmail") : "Email Not Found" %>'

显式强制转换在性能方面可能比eval更好,但例如

代码语言:javascript
复制
'<%# !string.IsNullOrEmpty(((System.Data.DataRowView)Container.DataItem)["CompanyEmail"].ToString()) ? ((System.Data.DataRowView)Container.DataItem)["CompanyEmail"].ToString() : "Email Not Found" %>'

希望能有所帮助

示例编辑:

代码语言:javascript
复制
protected void BindData()
{
    DataTable dt = DAL.GetData(...
    if(dt.Rows.Count == 0)
    {
        dt.Rows.Add(dt.NewRow());
    }
    DataList.DataSource = dt;
    DataList.DataBind();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5128253

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档