【问题标题】:Databinding problems with postback回发的数据绑定问题
【发布时间】:2009-09-24 09:33:11
【问题描述】:

我目前有两个问题阻止我正确完成两个项目。我将它们都放在这里,因为我相信它们与 asp.net 页面生命周期相关,但我找不到绕过它们的方法。

首先我有一个 DropDownList,我必须在代码隐藏中对其进行排序。它只包含文本,所以我应该能够使用页面加载中调用的以下方法来做到这一点:

Dim alist As ArrayList = New ArrayList 对于每个 litem 作为 ltEsittelyDropDownList.Items 中的 ListItem alist.Add(litem.Text) 下一个 alist.Sort() 将 uusiDDList 调暗为新的 DropDownList For i As Integer = 0 To alist.Count - 1 将 litem 作为新的 ListItem litem.Text = alist(i).ToString litem.Value = alist(i).ToString uusiDDList.Items.Add(litem) ' Response.Write(alist(i).ToString) 下一个 ltEsittelyDropDownList = uusiDDList ltEsittelyDropDownList.DataBind()

如您所见,其中有一个已注释的 response.write,表明列表实际上已排序。那么为什么,当我加载页面时,我看不到任何效果?

另外一个比较关键和困难的问题如下:

在aspx 页面中,我将SQL Server 2005 数据源绑定到gridview。在代码隐藏中,我抓住了 RowDataBound 事件,在该事件中我处理了 gridviews 单元格内的一些链接和属性。但是我不能让它在第一个页面加载时工作,只有在第一次额外的回发之后。

那么,有什么办法呢?并感谢前面的所有建议!

【问题讨论】:

    标签: asp.net data-binding page-lifecycle


    【解决方案1】:

    您的第一个问题是在您手动填充的控件上调用 DataBind。您可能在控件声明中指定了一个 DataSource,它在调用 DataBind 时使用。您可以通过将列表项添加到原始控件来简化代码:

    For i As Integer = 0 To alist.Count - 1
        ltEsittelyDropDownList.Items.Add(New ListItem(alist(i).ToString())
    Next
    

    或者,由于您已经有一个集合,您可以将它绑定到控件:

    ltEsittelyDropDownList.DataSource = alist
    ltEsittelyDropDownList.DataBind()
    

    对于您的第二个问题,一些示例代码会有所帮助 - 具体来说,控件数据绑定的位置和方式以及 RowDataBound 中的代码。

    【讨论】:

    • 嘿,有些错误。使用了您的第一个建议,效果很好。非常感谢!
    猜你喜欢
    • 2011-01-17
    • 1970-01-01
    • 2019-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多