c# - 从数据绑定(bind) ListView 中删除项目 : Possible bug?

标签 c# asp.net

我不能从数据绑定(bind) ListView 中删除项目吗?

我将 ListView 绑定(bind)到一组用户。可以说 ListView 正在显示来自测试对象的名称/地址。如果我尝试如下所示删除第一项,它仍会显示集合中的所有记录。这没有任何好处。我只想知道我错过了什么。

我怀疑这是因为数据源仍然指向未更改的集合。但是如果我手动更改 ListView 项目,它不应该优先吗?

protected void Page_Load(object sender, EventArgs e)
{
       lvTest.DataSource = new List<TestObj>{ obj1, obj2..}; //pseudo code
       lvTest.DataBind();

       lvTest.Items.RemoveAt(0);
}

更新 我知道这不是这样做的好方法。但是这个问题的目的是想知道为什么这行不通。

我认为这可能是 ListView 控件中的错误。如果您在删除第一个项目后检查调试器中的项目计数,您可以看到实际计数减少了 1,但它仍然呈现它。

此外,如果您在 RemoveAt(0) 之后执行了 lvTest.Items[0].Visible = false;,它实际上会使第二个项目不可见,这意味着listview 认为第一个项目已删除,但无论如何都会呈现它。

更新 2

根据要求,用于测试的标记和代码隐藏如下。

<asp:ListView ID="lvTest" runat="server" >
            <LayoutTemplate><asp:PlaceHolder ID="itemPlaceholder" runat="server" /></LayoutTemplate>
            <ItemTemplate>
                <div><%# Eval("CompanyName")%><hr /></div>
            </ItemTemplate>
            <EmptyDataTemplate><div>None</div></EmptyDataTemplate>
        </asp:ListView>


protected void Page_Load(object sender, EventArgs e)
        {
            lvTest.DataSource = GetCompanyList();

            lvTest.DataBind();

            lvTest.Items.RemoveAt(0);
}



public static List<Company> GetCompanyList()
        {
            List<Company> c = new List<Company>();

            Company c1 = new Company();
            c1.CustomerID = "2122";
            c1.ContactName = "testc1";
            c1.CompanyName = "test2";

            Company c2 = new Company();
            c2.CustomerID = "2123";
            c2.ContactName = "testc2";
            c2.CompanyName = "test2";

            c.Add(c1);
            c.Add(c2);

            return c;
        }

最佳答案

是的,你应该可以。据我了解,数据绑定(bind)纯粹是一个填充 ListView 中条目的过程,因此应该可以在之后删除它们。

但是,如果这是您想要做的,数据绑定(bind)列表似乎不是正确的答案。要么先获取数据,修改它,然后用修改后的列表填充 ListView ;或修改数据流以反射(reflect)您的需要 - 您说这不是一个选项。

您的意思是您希望它是数据绑定(bind)的,但是您没有实际匹配您需要的列表的数据源。这意味着它不应该是数据绑定(bind)的。

另一种可能有趣的可能性是使用 javascript/jquery 删除项目,这可能表明这是渲染问题还是对象问题。

关于c# - 从数据绑定(bind) ListView 中删除项目 : Possible bug?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7338024/

相关文章:

c# - 使用 RabbitMQ 永不结束消息

java - 将 c# DateTime 序列化为 SAP Webservice 的 Java 时间和 Java 日期

c# - 获取全局目录的 PrincipalContext 的连接服务器

c# - 如何获取像复选框一样使用的 Rad Button 的值

c# - javascript 和 c# 中的传递参数问题

javascript - 使用 ajax 回调将数据源绑定(bind)到 Controller 时,数据未显示在 Kendo Grid 上

c# - 面板 ArrangeOverride 和 MeasureOverride 方法

c# - OnClient Click 使用 Freetextbox 的 javascript

c# - 当某些内容缓存在 c# asp.net 中时,它是缓存在服务器上还是客户端上?

asp.net - Application_End 全局.asax