回发的数据绑定问题

时间:2009-09-24 09:33:11

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

我目前有两个问题阻止我正确完成两个项目。我会把它们放在这里,因为我相信它们已经连接到asp.net页面生命周期,但我无法找到解决方法。

首先我有一个DropDownList,我必须在codebehind中排序。它只包含文本,所以我应该可以使用页面加载中调用的以下方法来实现:

        Dim alist As ArrayList = New ArrayList

        For Each litem As ListItem In ltEsittelyDropDownList.Items
            alist.Add(litem.Text)
        Next

        alist.Sort()

        Dim uusiDDList As New DropDownList

        For i As Integer = 0 To alist.Count - 1
            Dim litem As New ListItem
            litem.Text = alist(i).ToString
            litem.Value = alist(i).ToString
            uusiDDList.Items.Add(litem)

            ' Response.Write(alist(i).ToString)
        Next

        ltEsittelyDropDownList = uusiDDList
        ltEsittelyDropDownList.DataBind()

正如你所看到的,那里有一个注释的response.write,它显示列表实际已经排序。那么,为什么当我加载页面时,我看不到任何效果?

另一个更为关键和困难的问题如下:

在aspx页面中,我将SQL Server 2005数据源绑定到gridview。在代码隐藏中,我抓住了RowDataBound事件,在该事件中我处理了gridviews单元格中的一些链接和属性。但是,我无法在第一次加载后第一次加载时才能使用它。

那么,有什么可做的?并感谢前面的所有建议!

1 个答案:

答案 0 :(得分: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中的代码。