2009-09-24 3 views
0

У меня есть две проблемы, которые в настоящее время мешают мне закончить два проекта должным образом. Я положу их обоих сюда, так как считаю, что они подключены к жизненному циклу страницы asp.net, но я не могу найти способ обойти их.Проблемы с привязкой к обратной почте

Сначала у меня есть DropDownList, который я должен сортировать по коду. Он содержит только текст, поэтому я должен быть в состоянии сделать это с помощью следующего метода, называемого в загрузке страницы:

 
     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

Ваша первая проблема - вызов 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.

+0

Хех, некоторые ошибки. Использовал ваше первое предложение, и он отлично работал. Огромное спасибо! – Zan