2012-04-14 3 views
0

У меня есть 3 пользовательских элемента управления на моей странице. один из этих элементов управления пользователя - это файл, а второй - это ключевое слово fileUploade. при загрузке файла файл загружает usercontrol, возвращает идентификатор записанной вставки. теперь я хочу использовать этот идентификатор в ключевом слове fileUploaded, но когда он вставляется в метку для просмотра идентификатора в файлеuploading, пользовательский элемент управления показывает правильный идентификатор для примера 1 или 2 или .., но в ключевом слове usercontrol отображается только 0 значение. Я использую работу фрейма объекта. как я могу получить доступ к этому идентификатору в пользовательском элементе управления ключевыми словами. спасибо.как передать значение между пользовательским элементом управления в ASP.NET C#

ответ

0

Вы можете использовать делегат передать идентификатор обратно на родительской странице. Когда идентификатор возвращается на родительскую страницу, вы запускаете функцию на родительской странице, которая вызывает публичную функцию для ключевого слова usercontrol.

Так что на вашем UPLOADING UserControl, сначала создать делегат, родительская страница будет прослушивать:

public delegate void PassIDToParent(string ID); 
public event PassIDToParent PassID; 

Далее огонь делегат когда у вас есть идентификатор, возвращаемый:

protected void Upload() //--- this is your current upload function 
{ 
    //--- other upload code 
    string ReturnedID = "1"; //--- whatever is returned 
    PassID(ReturnedID); 
} 

Теперь вам необходимо настроить прослушиватель на родительской странице. Как только слушатель выполнит, он выполнит функцию «PassID». В этой функции вы вызываете публичную функцию «LoadID» ключевого слова usercontrol. Так что на родительской странице, сделайте следующее:

protected void Page_Load(object sender, EventArgs e) 
{ 
    //--- setup the listener to receive the uploaded id 
    UploadUserControlID.PassID += new UploadUserControlID_ClassName.PassIDToParent(PassID); 
} 
protected void PassID(string id) 
{ 
    //--- this method is called from the listener above and it passes the id 
    KeywordUserControlID.LoadID(id); 
} 

И код для ключевого слова UserControl будет выглядеть следующим образом:

public void LoadID(string id) 
{ 
    //--- do whatever you need to with the id 
} 

Вот еще некоторая информация относительно использования делегатов: http://webdeveloperpost.com/Articles/Return-value-from-user-control-in-ASP-NET-and-C-Sharp.aspx

Надеюсь, что это поможет! Удачи! Не забудьте отметить как ответ!

Смежные вопросы