【问题标题】:EDMX in gridview dynamically creating columns according to datagridview中的EDMX根据数据动态创建列
【发布时间】:2013-12-06 09:34:59
【问题描述】:

我已经为此苦苦挣扎了一段时间。 我想使用实体框架动态创建数据列。

var query2 = (from c in dbc.FridayTimeSlots
              where c.RoundType == "Back 9"
              select c);
grvF2.Columns.Clear();
grvF2.DataSource = query2.ToList();
grvF2.Columns.Add(new BoundField { DataField = "TeeTime", HeaderText = "Tee-Off Time" });
grvF2.Columns.Add(new CommandField { HeaderText = "Select", SelectText = "Select Time", ButtonType = ButtonType.Link, ShowSelectButton = true });
grvF2.DataKeyNames = new string[] { "TimeID" };
grvF2.DataBind();

我的问题,我只想在数据字段 TeeTime = "something" 时显示命令字段,而当 TeeTime = "somethinig else" 我不想在此处显示命令字段。

如果尝试了几乎所有方法,但我无法得到解决方案。 任何帮助将不胜感激。

【问题讨论】:

    标签: c# asp.net gridview entity-framework-4


    【解决方案1】:

    在 GridView 的 RowDataBound 中,您可以找到 LinkButton 并制作 Visible=false

    protected void grvF2_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        GridViewRow gvr = e.Row as GridViewRow;
        if (gvr != null && gvr.RowType == DataControlRowType.DataRow)
        {
            LinkButton lb = gvr.Cells[1].Controls[0] as LinkButton;
            if (lb != null && gvr.Cells[0].Text.ToLower() != "something")
            {
                lb.Visible = false;
            }
        }
    
    }
    

    假设您有 GridView 的此标记:

    <asp:GridView ID="grvF2" runat="server" 
        AutoGenerateColumns="false" OnDataBound="grvF2_DataBound"     
        OnRowDataBound="grvF2_RowDataBound" >
    </asp:GridView>
    

    输出可能如下所示:

    【讨论】:

    • 非常感谢。根据您向我展示的内容,我尝试了类似的方法。它就像一个魅力。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-26
    • 2021-04-19
    • 1970-01-01
    • 2013-11-12
    • 2023-02-26
    • 1970-01-01
    • 2018-03-03
    相关资源
    最近更新 更多