Работаю в 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
Начинаю тихо ненавидеть делфи ........
Может я вообще все неправильно делаю?
Уже руки опускаются и комп стукнуть хочется.