【问题标题】:Datalist - No databind to server control, extract possible?Datalist - 没有数据绑定到服务器控件,可以提取吗?
【发布时间】:2010-02-08 16:05:22
【问题描述】:

在数据列表中,您通常使用 FindControl 在控件上提取行数据,该控件通过使用 Eval 的数据绑定分配值。

如果在您的数据列表中,没有绑定到 ASP.NET 服务器控件怎么办?它位于数据列表中,“直接”位于表格单元格中或单独存在。

你不能做一个 FindControl,那么如果它没有被绑定并且不是一个数据键,是否可以提取一个行值?

【问题讨论】:

    标签: asp.net data-binding ado.net datalist


    【解决方案1】:

    如果您的值在 DataList 中,您仍然可以 FindControl 它,前提是它位于标有 runat="server" 的控件内:

    <asp:Literal id="ltFixedValue" runat="server">5</asp:Literal>
    

    甚至

    <span id="spFixedValue" runat="server">5</span>
    

    【讨论】:

    • 我想远离文字,但我觉得我别无选择。也许 span 会好一点。
    【解决方案2】:

    我假设有数据绑定到您的数据列表(因为它正在呈现项目模板)。我会在数据列表的 OnItemDatabound 事件中使用类似的东西:

    如果(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) { 我的对象 obj = (myobject)e.Item.DataItem; }

    一旦你转换了数据项,你就可以提取你需要的值。

    【讨论】:

    • 我实际上是在此事件中设置数据,并希望通过单击按钮获取数据。我想我可以将这个事件中的数据保存在视图状态中,但我会有相同数据的 2 个副本。我认为我无法避免使用 runat server。
    • 我认为您可能希望将需要捕获的数据连接到目标按钮的命令参数中 - 然后该值在您创建的 OnClick 方法中可用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多