Страница: 1 | 
		
		 
			   
			 
			 
			 
			 Страница: 1 | 
 
			
 
  
		
     
  
    
Вопрос: Обращение к полям DetailsView
     
    
Добавлено: 13.05.11 23:21
     
      
  
				
			  
					 
			
				 
    
		
       
    
Автор вопроса:  
    
 The_Immortal
      
       
  
Ребят, а не подскажите еще через пожалуйста как сделать так, чтобы в поле при редактировании какой-либо записи из GridView (через DetailsView), был выбор значений уже заранее заполненный?
 
    
Т.е. у меня имеется таблица1:
 
Имя_препод.     Предмет.
Иванов             Матем-ка
Сидоров            Информатика
Иванов             ПЯВУ
 
И еще одна таблица2:
Имя_препод.     Предмет.   Поле3   Поле4
*список зачений     *список 
             из табл.1
Т.е. необходимо, чтобы значения колонок "Имя_преп." и "Предмет" автоматически попадали в таблицу2 из табл. 1. Причем преподаватель соответствовал предмету: Выбираю "Иванов", в колонке Предмет: Информатика, ПЯВУ.
Вообще не понимаю как программировать там (в файле *aspx.cs) :( Приходится работать непосредственно в файле *.aspx, что очень накладно... Скучаю очень по C++ билдеру - там как рыба...
 
Вот что сделал:
 
<asp:TemplateField HeaderText="ФИО преп.">
    <ItemTemplate>
        <asp:DropDownList ID="DropDownList2" runat="server" 
        DataSourceID="SqlDataSource3" DataTextField="Prepod_name" 
        DataValueField="Prepod_name">
        </asp:DropDownList>
    </ItemTemplate>
</asp:TemplateField>
Значения в DropDownList появляются, только вот при нажатии "Обновить запись" в DetailsView в БД пишется пустое значение. Вероятно, надо обращаться к этому полю в DetailsView из файла *aspx.cs по событию Updated/Inserted, но не знаю как...
Помогите, пожалуйста....
				
		
		
					 
			
				 
  
		
     
  
    
Ответы
     
    
Всего ответов: 2
     
      
  
		
	  
			 
	
		 
    
       
    
Номер ответа: 1 
      
Автор ответа:
 The_Immortal
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
Вопросов: 3
Ответов: 7
      
 Профиль |  | #1
       
Добавлено:  14.05.11 13:41
       
    
       
  
Ребят, формализую вопрос: 
 
    
не подскажите как программно можно записать значение из DropDownList в ячейку GridView (ну и соответственно в SqlDataSource - т.е. значение, выбранное из DropDownList, должно быть записано в саму БД).
Перерыл весь инет - так найти решения и не удалось... Пробовал вот такое, но не выбранное значение никуда не сохраняется...
Первый вариант:
        protected void DetailsView1_ItemUpdated(object sender, DetailsViewUpdatedEventArgs e)
        {
            
ropDownList ddl = DetailsView1.FindControl("
ropDownList1"
 as DropDownList;
            SqlDataSource2.UpdateCommand = "UPDATE [table1] SET [Facult_name] = @Facult_name, [Prepod_name] ='" + ddl.SelectedValue + "' WHERE [FacultID] = @original_FacultID";
            SqlDataSource2.Update();
            GridView1.DataBind();
        }
Второй вариант:
        protected void DetailsView1_ItemUpdated(object sender, DetailsViewUpdatedEventArgs e)
        {
            
ropDownList ddl = DetailsView1.FindControl("
ropDownList1"
 as DropDownList;
            SqlDataSource2.UpdateParameters["Prepod_name"].DefaultValue = ddl.SelectedValue;
            this.SqlDataSource2.Update();
            GridView1.DataBind();
        }
Помогите, пожалуйста... Это одна из основных функций, которые просто необходимо реализовать в моем дипломе... А его защита через несколько дней 
Благодарю!
		
	  
			 
	
		 
    
       
    
Номер ответа: 2 
      
Автор ответа:
 The_Immortal
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
Вопросов: 3
Ответов: 7
      
 Профиль |  | #2
       
Добавлено:  14.05.11 15:12
       
    
       
  
Да, еще важно отметить следующее:
 
    
Я использовал вот это руководство: http://msdn.microsoft.com/ru-ru/library/ms178294(v=vs.90).aspx
Дело в том, что у них там используется только одна таблица. У меня же ситуация следующая:
На странице имеется 3 SqlDataSource, GridView, DetailsView, DropDownList:
SqlDataSource1 содержит выборку из table1 и привязан к GridView1;
SqlDataSource2 также содержит выборку из table1 и привязан к DetailsView1;
а вот SqlDataSource3 содержит выборку из table2 и привязан к DropDownList1.
Так вот... Из-за того что я использую 2 разных таблицы (table1 и table2), я не могу использовать привязку (Bind).
То есть если использовать вот такой код:
То получаю след. ошибку:
'DropDownList1' has a SelectedValue which is invalid because it does not exist in the list of items.
Parameter name: value 
А если написать без SelectedValue='<%# Bind("Prepod_name"
 %>': 
то в DetailsView (в DropDownList1) списком выводятся значения из table2.
Но теперь при выборе какого-либо из этих значений, мне необходимо сохранить его в БД (GridView/SqlDataSource) - а вот как это сделать почему-то никто не знает, хотя задача на самом деле банальная: DropDownList получает значения из другой таблицы...