Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Delphi .NET
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 23.07.2007, 09:59
Vredina Vredina вне форума
Прохожий
 
Регистрация: 23.07.2007
Сообщения: 2
Репутация: 10
Вопрос Помогите с Датагрид

Работаю в 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  
Старый 10.09.2008, 21:08
Merch7 Merch7 вне форума
Прохожий
 
Регистрация: 25.12.2007
Сообщения: 24
Репутация: 5
Лампочка Подсказка

У меня была проблема, но наподобие. Щас опишу, что было, а потом посмотри, поможет тебе это или не поможет.
Для 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;

Извини, если не помогло. Я старался!
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 19:34.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter