experssionhandle数据源,在datagrid中利用checkbox显示并编辑boolean类型数据
2009-01-06 19:14
465 查看
从blog.org的我的原博客中迁入
发表时间:2007-10-8 17:21:08
经过艰苦的探索,今天下午还是做出来了,贴出相关代码
环境为expressionhandle名为ehperson,是person类的全部实例 ,即express表达式person.allinstances
1.aspx文件
<ASP:DataGrid id="DataGrid1" runat="server" width="569px" height="244px" bordercolor="White" borderstyle="Ridge" borderwidth="2px" cellspacing="1" backcolor="White" cellpadding="3" gridlines="None" datasource="<%# ehperson %>" autogeneratecolumns="False" datakeyfield="ExternalId">
<FooterStyle forecolor="Black" backcolor="#C6C3C6"></FooterStyle>
<SelectedItemStyle font-bold="True" forecolor="White" backcolor="#9471DE"></SelectedItemStyle>
<ItemStyle forecolor="Black" backcolor="#DEDFDE"></ItemStyle>
<HeaderStyle font-bold="True" forecolor="#E7E7FF" backcolor="#4A3C8C"></HeaderStyle>
<Columns>
<ASP:BoundColumn datafield="name" sortexpression="name" headertext="name"></ASP:BoundColumn>
<!--模板开始textbox-->
<asp:templatecolumn>
<itemtemplate>
<asp:textbox id="text1" runat="server" enabled="False" TEXT='<%# DataBinder.Eval(Container.DataItem,"NAME")%>'></asp:textbox>
</itemtemplate>
<edititemtemplate>
<asp:textbox id="text1" runat="server" enabled="TRUE" TEXT='<%# DataBinder.Eval(Container.DataItem,"NAME")%>'></asp:textbox>
</edititemtemplate>
</asp:templatecolumn>
<!--模板结束-->
<!--模板开始checkbox-->
<ASP:TemplateColumn headertext="性别">
<ItemTemplate>
<asp:checkbox id="checkbox1" runat="server" enabled="False" checked='<%# DataBinder.Eval(Container.DataItem,"sex")%>'>
</asp:checkbox>
</ItemTemplate>
<EditItemTemplate>
<asp:checkbox id="checkbox1" runat="server" enabled="true" checked='<%# DataBinder.Eval(Container.DataItem,"sex")%>'>
</asp:checkbox>
</EditItemTemplate>
</ASP:TemplateColumn>
<!--模板结束-->
<ASP:EditCommandColumn buttontype="LinkButton" updatetext="Update" canceltext="Cancel" edittext="Edit"></ASP:EditCommandColumn>
<ASP:ButtonColumn text="Delete" commandname="Delete"></ASP:ButtonColumn>
</Columns>
<PagerStyle horizontalalign="Right" forecolor="Black" backcolor="#C6C3C6"></PagerStyle>
</ASP:DataGrid>
有颜色的部分是自定义部分,数据源是expressionhandle,名为ehperson
2在相关的.pas文件中的update事件加入两行代码,一个自定义控件模板一行
红色部分为加入
procedure TWebForm3.DataGrid_UpdateCommand(source: TObject; e: System.Web.UI.WebControls.DataGridCommandEventArgs);
var
SourceGrid: DataGrid;
Id: string;
Row: TObject;
Eh: ElementHandle;
ColIndex: Integer;
Col: BoundColumn;
begin
SourceGrid := source as DataGrid;
Id := SourceGrid.DataKeys[e.Item.ItemIndex].ToString;
SourceGrid.DataBind(); // To set DataSource
Eh := SourceGrid.DataSource as ElementHandle;
Row := eh.RenderElement(ObjectForId(Id));
for colIndex := 0 to SourceGrid.Columns.Count - 1 do
begin
Col := BoundColumn(SourceGrid.Columns[colIndex]);
if Assigned(Col) and (not Col.ReadOnly) then
eh.SetRenderedElementProperty(row, Col.DataField, (e.Item.Cells[colIndex].Controls[0] as TextBox).Text, true);
end;
eh.SetRenderedElementProperty(row, 'name', (e.Item.FindControl('text1') as textbox).text, true);
eh.SetRenderedElementProperty(row, 'sex', convert.ToString((e.Item.FindControl('checkbox1') as checkbox).Checked), true);
UpdateDatabase;
SourceGrid.EditItemIndex := -1;
DataBind;
end;
这里,sex,name分别为ehperson里面的两个字段名.convert.ToString((e.Item.FindControl('checkbox1') as checkbox).Checked) 这里只接受字符表达式,故要转换类型
发表时间:2007-10-8 17:21:08
经过艰苦的探索,今天下午还是做出来了,贴出相关代码
环境为expressionhandle名为ehperson,是person类的全部实例 ,即express表达式person.allinstances
1.aspx文件
<ASP:DataGrid id="DataGrid1" runat="server" width="569px" height="244px" bordercolor="White" borderstyle="Ridge" borderwidth="2px" cellspacing="1" backcolor="White" cellpadding="3" gridlines="None" datasource="<%# ehperson %>" autogeneratecolumns="False" datakeyfield="ExternalId">
<FooterStyle forecolor="Black" backcolor="#C6C3C6"></FooterStyle>
<SelectedItemStyle font-bold="True" forecolor="White" backcolor="#9471DE"></SelectedItemStyle>
<ItemStyle forecolor="Black" backcolor="#DEDFDE"></ItemStyle>
<HeaderStyle font-bold="True" forecolor="#E7E7FF" backcolor="#4A3C8C"></HeaderStyle>
<Columns>
<ASP:BoundColumn datafield="name" sortexpression="name" headertext="name"></ASP:BoundColumn>
<!--模板开始textbox-->
<asp:templatecolumn>
<itemtemplate>
<asp:textbox id="text1" runat="server" enabled="False" TEXT='<%# DataBinder.Eval(Container.DataItem,"NAME")%>'></asp:textbox>
</itemtemplate>
<edititemtemplate>
<asp:textbox id="text1" runat="server" enabled="TRUE" TEXT='<%# DataBinder.Eval(Container.DataItem,"NAME")%>'></asp:textbox>
</edititemtemplate>
</asp:templatecolumn>
<!--模板结束-->
<!--模板开始checkbox-->
<ASP:TemplateColumn headertext="性别">
<ItemTemplate>
<asp:checkbox id="checkbox1" runat="server" enabled="False" checked='<%# DataBinder.Eval(Container.DataItem,"sex")%>'>
</asp:checkbox>
</ItemTemplate>
<EditItemTemplate>
<asp:checkbox id="checkbox1" runat="server" enabled="true" checked='<%# DataBinder.Eval(Container.DataItem,"sex")%>'>
</asp:checkbox>
</EditItemTemplate>
</ASP:TemplateColumn>
<!--模板结束-->
<ASP:EditCommandColumn buttontype="LinkButton" updatetext="Update" canceltext="Cancel" edittext="Edit"></ASP:EditCommandColumn>
<ASP:ButtonColumn text="Delete" commandname="Delete"></ASP:ButtonColumn>
</Columns>
<PagerStyle horizontalalign="Right" forecolor="Black" backcolor="#C6C3C6"></PagerStyle>
</ASP:DataGrid>
有颜色的部分是自定义部分,数据源是expressionhandle,名为ehperson
2在相关的.pas文件中的update事件加入两行代码,一个自定义控件模板一行
红色部分为加入
procedure TWebForm3.DataGrid_UpdateCommand(source: TObject; e: System.Web.UI.WebControls.DataGridCommandEventArgs);
var
SourceGrid: DataGrid;
Id: string;
Row: TObject;
Eh: ElementHandle;
ColIndex: Integer;
Col: BoundColumn;
begin
SourceGrid := source as DataGrid;
Id := SourceGrid.DataKeys[e.Item.ItemIndex].ToString;
SourceGrid.DataBind(); // To set DataSource
Eh := SourceGrid.DataSource as ElementHandle;
Row := eh.RenderElement(ObjectForId(Id));
for colIndex := 0 to SourceGrid.Columns.Count - 1 do
begin
Col := BoundColumn(SourceGrid.Columns[colIndex]);
if Assigned(Col) and (not Col.ReadOnly) then
eh.SetRenderedElementProperty(row, Col.DataField, (e.Item.Cells[colIndex].Controls[0] as TextBox).Text, true);
end;
eh.SetRenderedElementProperty(row, 'name', (e.Item.FindControl('text1') as textbox).text, true);
eh.SetRenderedElementProperty(row, 'sex', convert.ToString((e.Item.FindControl('checkbox1') as checkbox).Checked), true);
UpdateDatabase;
SourceGrid.EditItemIndex := -1;
DataBind;
end;
这里,sex,name分别为ehperson里面的两个字段名.convert.ToString((e.Item.FindControl('checkbox1') as checkbox).Checked) 这里只接受字符表达式,故要转换类型
相关文章推荐
- [borland eco 技术]experssionhandle数据源,在datagrid中利用checkbox显示并编辑boolean类型数据
- 利用GridView显示主细表并一次编辑明细表所有数据的例子
- 利用GridView显示主细表并一次编辑明细表所有数据的例子
- 利用GridView显示主细表并一次编辑明细表所有数据的例子
- (论坛答疑点滴)如何利用DataGrid纵向显示数据?
- 利用ASP.NET DataGrid显示主次关系的数据
- 利用GridView显示主细表并一次编辑明细表所有数据的例子【回网友帖子】
- Table 组件使用指南之四:使用CheckBox组件保存和显示Boolean类型字段
- ASP.NET基础教程-DataGrid表格控件-利用模板列中显示检索的数据
- AdvancedDataGrid 用XML做数据源 显示树形数据
- 利用GridView显示主细表并一次编辑明细表所有数据的例子
- [导入]利用GridView显示主细表并一次编辑明细表所有数据的例子
- 改個名字再發一次--本例運用了javascript,html控件,服务器控件,最重要的就是javascript对空间的操作--GridView套GridViewtao--- 利用GridView显示主细表并一次编辑明细表所有数据的例子
- [转]利用GridView显示主细表并一次编辑明细表所有数据的例子
- 利用ASP.NET来访问Excel文档+DATAGRID显示数据[注意:Excel中有图片]
- 利用GridView显示主细表并一次编辑明细表所有数据的例子
- 利用ASP.NET DataGrid显示主次关系的数据
- easyui-datagrid行编辑,后台以主表为基表关联从表进行查询数据后,在前台行编辑字段内容的显示
- 利用ASP.NET DataGrid显示主次关系的数据 [转]
- DataGrid的使用:(二)、利用ASP.NET DataGrid显示主次关系的数据