Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - ASP и VBScript

Страница: 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)
        {
            ;DropDownList ddl = DetailsView1.FindControl(";DropDownList1";) 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)
        {
            ;DropDownList ddl = DetailsView1.FindControl(";DropDownList1";) 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).
То есть если использовать вот такой код:

  1.                 <asp:TemplateField HeaderText="ФИО преп." SortExpression="Prepod_name">
  2.                     <EditItemTemplate>
  3.                         <asp:DropDownList ID="DropDownList1" runat="server"
  4.                             DataSourceID="SqlDataSource3" DataTextField="Prepod_name"
  5.                             DataValueField="Prepod_name" SelectedValue='<%# Bind("Prepod_name") %>'>
  6.                         </asp:DropDownList>
  7.                     </EditItemTemplate>
  8.                     <InsertItemTemplate>
  9.                         <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("Prepod_name") %>'></asp:TextBox>
  10.                     </InsertItemTemplate>
  11.                     <ItemTemplate>
  12.                         <asp:Label ID="Label1" runat="server" Text='<%# Bind("Prepod_name") %>'></asp:Label>
  13.                     </ItemTemplate>
  14.                 </asp:TemplateField>


То получаю след. ошибку:
'DropDownList1' has a SelectedValue which is invalid because it does not exist in the list of items.
Parameter name: value

А если написать без SelectedValue='<%# Bind("Prepod_name";) %>':
  1.                 <asp:TemplateField HeaderText="ФИО преп." SortExpression="Prepod_name">
  2.                     <EditItemTemplate>
  3.                         <asp:DropDownList ID="DropDownList1" runat="server"
  4.                             DataSourceID="SqlDataSource3" DataTextField="Prepod_name"
  5.                             DataValueField="Prepod_name">
  6.                         </asp:DropDownList>
  7.                     </EditItemTemplate>
  8.                     <InsertItemTemplate>
  9.                         <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("Prepod_name") %>'></asp:TextBox>
  10.                     </InsertItemTemplate>
  11.                     <ItemTemplate>
  12.                         <asp:Label ID="Label1" runat="server" Text='<%# Bind("Prepod_name") %>'></asp:Label>
  13.                     </ItemTemplate>
  14.                 </asp:TemplateField>

то в DetailsView (в DropDownList1) списком выводятся значения из table2.
Но теперь при выборе какого-либо из этих значений, мне необходимо сохранить его в БД (GridView/SqlDataSource) - а вот как это сделать почему-то никто не знает, хотя задача на самом деле банальная: DropDownList получает значения из другой таблицы... :(

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам