如果在转发器中声明

Ser*_*ity 7 c# asp.net

我在我的页面上有这个转发器.在默认列下我想要的是应该有一个IF条件来检查我的表的"IsDEfault"字段值.如果IsDefault = True,则应在转发器内显示"label1"下面的标签,即"是",否则应显示"Make DEfault"链接.

现在,如何在转发器中将此IF语句作为内联代码包含在内,以实现我的目标?

<asp:LinkButton ID="lnk1" Text="Make Default" CommandName="SetDefault" runat="server" Visible="True" CommandArgument='<%#Eval("UserID") %>' CausesValidation="false"></asp:LinkButton>

<asp:Label ID="label1" Text="Yes" runat="server" Visible="False"></asp:Label>
Run Code Online (Sandbox Code Playgroud)

我有个主意 :-

<%# If DataBinder.Eval(Container.DataItem,"IsDefault") = "True"
Then%>
<%End If%>
Run Code Online (Sandbox Code Playgroud)

我现在该怎么形成"然后"的陈述?请帮我正确的语法..thnx我是否需要制作一个方法来检查"IsDefault"是否为真,然后在我的转发器中的内联代码中调用它?我该怎么办呢?

[编辑]

我尝试如下: -

<% If (Eval("Container.DataItem,"IsDefault"")="True"?

("<asp:LinkButton ID="lnk1" Text="Set as Default" CommandName="SetDefault1" runat="server" CommandArgument='<%#Eval("User1ID") %>'
CausesValidation="false" Visible=true></asp:LinkButton>") : ("<asp:Label ID="label1" Text="Yes" runat="server" Visible=true></asp:Label>")
)%>
Run Code Online (Sandbox Code Playgroud)

没工作:(帮助!!

ind*_*dra 3

这是您的中继器标记。请注意,两个控件在开始时都是隐藏的:

<asp:Repeater runat="server" ID="rpt1" OnItemDataBound="rpt1_ItemDataBound" onitemcommand="rpt1_ItemCommand">
    <ItemTemplate>
        <p>
            ID: <%# Eval("Id") %>
            IsDefault: <%# Eval("IsDefault") %>
            Name: <%# Eval("Name") %>

            <asp:Label BackColor="Blue" ForeColor="White" runat="server" ID="lDefault" Text="DEFAULT" Visible="false" />

            <asp:Button runat="server" ID="btnMakeDefault" Text="Make Default" Visible="false" CommandArgument='<%# Eval("Id") %>' />
        </p>
    </ItemTemplate>
</asp:Repeater>
Run Code Online (Sandbox Code Playgroud)

还有一些与之配套的代码。注意我已经模拟了对 blluser 对象集合的检索,因此有一些与此相关的附加代码,您不需要这些代码,因为您绑定到的 bllusers 集合可能来自数据库或其他东西?

无论如何,我认为这就是您正在寻找的,但如果不是,请告诉我;-)

 //Dummy object for illustrative purposes only.
[Serializable]
public class bllUsers
{
    public int Id { get; set; }
    public bool isDefault { get; set; }
    public string Name { get; set; }

    public bllUsers(int _id, bool _isDefault, string _name)
    {
        this.Id = _id;
        this.isDefault = _isDefault;
        this.Name = _name;
    }
}

protected List<bllUsers> lstUsers{
    get
    {
        if (ViewState["lstUsers"] == null){
            ViewState["lstUsers"] = buildUserList();
        }
        return (List<bllUsers>)ViewState["lstUsers"];
        }
        set{
            ViewState["lstUsers"] = value;
        }
    }


protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        buildGui();
    }
}

private List<bllUsers> buildUserList(){
    lstUsers = new List<bllUsers>();
    lstUsers.Add(new bllUsers(1, false, "Joe Bloggs"));
    lstUsers.Add(new bllUsers(2, true, "Charlie Brown"));
    lstUsers.Add(new bllUsers(3, true, "Barack Obama"));

    return lstUsers;
}

private void buildGui()
{
    rpt1.DataSource = lstUsers;
        rpt1.DataBind();
}

protected void rpt1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
        bllUsers obj = (bllUsers)e.Item.DataItem;//this is the actual bllUser the row is being bound to.

        //Set the labels
        ((Label)e.Item.FindControl("ldefault")).Visible = obj.isDefault;
        ((Button)e.Item.FindControl("btnMakeDefault")).Visible = ! obj.isDefault;

        //Or use a more readable if/else if you want:
        if (obj.isDefault)
        {
            //show/hide    
        }
        else
        {
            //set visible/invisible
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助 :-)