【问题标题】:ASP.NET Control Data Source changed by another ControlASP.NET 控件数据源被另一个控件更改
【发布时间】:2013-05-15 18:26:15
【问题描述】:

我有一个 ASP.NET Gridview 控件,允许您选择员工。

员工实体具有组实体的导航属性。

我有一个 ASP.NET ListView 控件,它显示员工所在的所有组。

GridView的SelectedIndexChanged函数长这样

protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
    {
        DAL.SafetyContext sc = new DAL.SafetyContext();
        long empid = (long)GridView1.SelectedDataKey.Value;
        DAL.Employee emp = sc.Employees.Where(x => x.EID == empid).FirstOrDefault();
        ListView1.DataSource = emp.Groups;
        ListView1.DataBind();
    }

问题是我不能在 ListView 的项目模板中 因为没有绑定数据来控制页面加载的时间。

有没有办法解决这个问题?

【问题讨论】:

  • 你为什么不能?您收到错误消息吗?
  • 实际上,我认为我误解了错误。就像不检查以确保 GridView1.SelectedDataKey.Value 不为空一样简单。 null 的长时间转换是破坏它的原因。

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


【解决方案1】:

尝试为您的ListView 创建一个EmptyItemTemplate。这样,当没有数据时,您可以显示不尝试对(不存在的)“名称”数据进行 Eval 的内容。

<EmptyItemTemplate>
   <td runat="server">Nothing to see here</td>
</EmptyItemTemplate>

您可以让它符合您的 ItemTemplate 的结构,但只需在您进行数据绑定的所有位置保留空白/空字符串。

【讨论】:

  • 如果我使用的是布局,是否需要为 EmptyItemTemplate 和 ItemTemplate 设置单独的项目占位符?
  • @SmashCode 我没有使用过带有 ListView 控件的布局,所以我真的不知道。
猜你喜欢
  • 2016-07-17
  • 2018-07-03
  • 1970-01-01
  • 2017-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多