[borland eco 技术]experssionhandle数据源,在datagrid中利用checkbox显示并编辑boolean类型数据

本文介绍如何在ASP.NET中使用DataGrid实现自定义编辑功能,包括设置样式、绑定数据源、创建自定义列及处理更新命令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

经过艰苦的探索,今天下午还是做出来了,贴出相关代码

环境为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) 这里只接受字符表达式,故要转换类型

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值