|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Помогите с Датагрид
Работаю в Delphi 8.0 for the Microsoft .NET Framework.
Создаю DataGrid с возможностью редактирования: <asp:datagrid id=dgrPrice_List style="Z-INDEX: 1; LEFT: 0px; POSITION: absolute; TOP: 0px" runat="server" borderstyle="Double" bordercolor="LightSteelBlue" width="100%" height="100%" backcolor="Lavender" autogeneratecolumns="False" borderwidth="4px" allowsorting="True"> <headerstyle font-italic="True" font-bold="True" horizontalalign="Center" height="100%" borderwidth="4px" borderstyle="Double" bordercolor="LightSteelBlue" width="100%" verticalalign="Middle" backcolor="#C0C0FF"> </headerstyle> <columns> <asp:boundcolumn datafield="TypMarkaID" readonly="True"> </asp:boundcolumn> <asp:boundcolumn datafield="TypMarkaName" sortexpression="TypMarkaName" readonly="True" headertext="Тип(марка) прибора"> </asp:boundcolumn> <asp:boundcolumn datafield="NameKipID" sortexpression="NameKipID" readonly="True" headertext="Наименование"> </asp:boundcolumn> <asp:boundcolumn datafield="Price_KIP" sortexpression="Price_KIP" headertext="Цена (КИПиА)"> </asp:boundcolumn> <asp:boundcolumn datafield="Norma_Time" sortexpression="Norma_Time" headertext="Норма времени"> </asp:boundcolumn> <asp:editcommandcolumn buttontype="LinkButton" updatetext="Обновить" canceltext="Отмена" edittext="Правка"> </asp:editcommandcolumn> </columns> </asp:datagrid> В обработчиках пишу: //Открытие ячеек для редактирования procedure TWebForm1.dgrPrice_List_EditCommand(source: System.Object; e: System.Web.UI.WebControls.DataGridCommandEventArgs ); begin dgrPrice_List.EditItemIndex := e.Item.ItemIndex; dgrPrice_List.DataBind; end; //Сохранение данных в базу procedure TWebForm1.dgrPrice_List_UpdateCommand(source: System.Object; e: System.Web.UI.WebControls.DataGridCommandEventArgs ); var ctr, ctr1: string; begin p := TDbProvider(Session['provider']); conn := p.Connection; ctr := e.Item.Cells[3].Controls[0].ToString; ctr1 := e.Item.Cells[4].Controls[0].ToString; cmd := SqlCommand.Create('UPDATE dbo.Price_List_KIP '+ 'SET dbo.Price_List_KIP.Price_KIP =''' + ctr + ''', dbo.Price_List_KIP.Norma_Time =''' + ctr1 + ''', LastUpdate = getdate() '+ 'WHERE TypMarkaID = @markaid', conn); cmd.Parameters.Add('@markaid', dgrPrice_List.DataKeys[e.Item.ItemIndex]); try cmd.CommandType := CommandType.Text; conn.Open; cmd.ExecuteNonQuery; finally conn.Close; cmd.Free; end; dgrPrice_List.DataBind; end; Все вроде бы срабатывает правильно, индекс передается, в базу все пишется, но !!!!!!!! при записи в базу пишется не введенное значение, а тип контрола System.Web.UI.WebControls.TextBox Вопрос: КАК ВЫЦЕПИТЬ ЗНАЧЕНИЯ И ЗАПИСАТЬ В БАЗУ??????????? Подскажите правильный синтаксис, ПОЖАЛУЙСТА!!!!!!! ctr := (System.Web.UI.WebControls.TextBox)e.Item.Cells[3].Controls[0].Text; ctr1 := (System.Web.UI.WebControls.TextBox)e.Item.Cells[4].Controls[0].Text; Не срабатывает, выдает ошибку: Incompatible types: 'string' and 'Class reference' Undeclared identifier: 'Text' ctr := ((System.Web.UI.WebControls.TextBox)e.Item.Cells[3].Controls[0]).Text; Тоже не работает, возвращает все тот же System.Web.UI.WebControls.TextBox Начинаю тихо ненавидеть делфи ........ Может я вообще все неправильно делаю? Уже руки опускаются и комп стукнуть хочется. |
#2
|
|||
|
|||
Подсказка
У меня была проблема, но наподобие. Щас опишу, что было, а потом посмотри, поможет тебе это или не поможет.
Для WinForm был у меня ContextMenu с MenuItem. При нажатии на пункт меню вызывалась процедура с переменными Sender и e: MenuItem1_Click(sender: System.Object; e: System.EventArgs); Процедура вызывалась, но нужно было извлечь текст пункта меню. У Sender и е свойств Text не было. Позже нашел в англосправке код: With Sender as MenuItem do str:=Text; // Show Text MessageBox.Show('Текст: '+str); Попробуй также, может быть получится. Не шарю в Web.UI, но может быть так: With e.Item.Cells[3].Controls[0] as System.Web.UI.WebControls.TextBox do ctr:=Text; Извини, если не помогло. Я старался! |