Как справиться с нулем (GridView Container.DataItem) - PullRequest
3 голосов
/ 19 января 2011

что здесь не так, почему он жалуется на закрытие ")"?

<asp:TemplateField HeaderText="Name" SortExpression="Name">
                    <ItemTemplate>   
                        <%# FixNull((namespace.Student)(Container.DataItem), "Name"); %>               
                    </ItemTemplate>
                    <EditItemTemplate>
                       <asp:dropdownlist id="ddlStudent" runat="server" datasourceid="CountyDataSource"
                            datatextfield="Name" datavaluefield="Id" autopostback="false">
                        </asp:dropdownlist>
                    </EditItemTemplate>
                </asp:TemplateField>

 protected string FixNull(object dataItem, string fieldName)
 {
        if (dataItem != null)
        {
            System.Data.DataRowView cls = (System.Data.DataRowView)dataItem;
            if (!cls.Row.IsNull(fieldName))
                return (cls[fieldName]).ToString();
            else
                return "&nbsp;";
        }
        else
            return "&nbsp;";
    }



Compiler Error Message: CS1026: ) expected

Source Error: Line: 133 


Line 131:                  <asp:TemplateField HeaderText="Name" SortExpression="Name">
Line 132:                    <ItemTemplate>   
Line 133:    <%# FixNull((namespace.Student)(Container.DataItem), "Name"); %>               
Line 134:                    </ItemTemplate>
Line 135:                    <EditItemTemplate>

Ответы [ 4 ]

5 голосов
/ 23 января 2011
<%# Eval("CountyName") == null ? "&nbsp;" : Eval("CountyName")%>   
1 голос
/ 05 января 2012

Для дальнейшего упрощения вы можете использовать

<%# this.Eval("CountyName") ?? "&nbsp;"%>
1 голос
/ 19 января 2011

Я думаю, вам не нужно ;

, это должно просто читать:

<%# FixNull((namespace.Student)(Container.DataItem), "Name") %>

0 голосов
/ 19 января 2011

Может быть попробовать что-то вроде этого:

 <asp:TemplateField HeaderText="Name" SortExpression="Name">
    <ItemTemplate>   
        <%# FixNull(DataBinder.Eval(Container.DataItem, "Name"))%>               
    </ItemTemplate>
    <EditItemTemplate>
        <asp:dropdownlist id="ddlStudent" runat="server" datasourceid="CountyDataSource"
            datatextfield="Name" datavaluefield="Id" autopostback="false">
        </asp:dropdownlist>
    </EditItemTemplate>
</asp:TemplateField>


protected string FixNull(string dataItem)
{
    if (!string.IsNullOrEmpty(dataItem))
    {
        return dataItem;
    }
    return "&nbsp;";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...