CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  ASP.NET

DataList里的模板列为DataGrid时如何能编辑DataGrid模板列里的内容?

楼主blackcatiii(能教我做框架设计吗)2002-11-22 10:35:01 在 .NET技术 / ASP.NET 提问

DataGrid在设计时不可用,怎么对其Edit、Update等事件进行处理?  
   
  <asp:DataList   id="DataList1"   runat="server"   Width="97%">  
  <ItemTemplate>  
  <asp:datagrid   id="dgdPf"   runat="server"   Width="100%"   CssClass="td"   Visible="False"   SelectedItemStyle-BackColor="#cccccc"   Enabled="False"   BorderColor="#999999"   AutoGenerateColumns="False">  
  <Columns>  
  <asp:BoundColumn   Visible="False"   DataField="ID"   SortExpression="ID"   ReadOnly="True"   HeaderText="PfID"></asp:BoundColumn>  
  <asp:TemplateColumn   HeaderText="描述">  
  <ItemTemplate>  
  <asp:Label   id="Label10"   runat="server"   Text='<%#   DataBinder.Eval(Container.DataItem,   "Discribe")   %>'>  
  </asp:Label>  
  </ItemTemplate>  
  <EditItemTemplate>  
  <asp:TextBox   id="txtDiscribe"   TextMode=MultiLine   Rows=5   MaxLength=500   Text='<%#   DataBinder.Eval(Container.DataItem,"Discribe")%>'   runat="server"   Width="128px"/>  
  </EditItemTemplate>  
  </asp:TemplateColumn>  
  <asp:EditCommandColumn   ButtonType="LinkButton"   UpdateText="&lt;img   src=img/save.gif   border=0   alt=保存   /&gt;"   CancelText="&lt;img   src=img/upcancel.gif   border=0   alt=取消   /&gt;"   EditText="&lt;img   src=img/edit.gif   border=0   alt=编辑   /&gt;">  
  </asp:EditCommandColumn>  
  </Columns>  
  </asp:datagrid>  
  </ItemTemplate>  
  </asp:DataList>  
  问题点数:50、回复次数:15Top

1 楼icyer()回复于 2002-11-22 10:40:49 得分 0

<asp:DataGrid   ...   onEditCommand="DataGrid_EditCommand"   ...>  
   
  protected   void   DataGrid_EditCommand(...)  
  {  
  ..  
  }  
  Top

2 楼blackcatiii(能教我做框架设计吗)回复于 2002-11-22 13:05:12 得分 0

不行啊,说找不到DataGrid1。  
  private   void   DataGrid1_Edit(object   source,   System.Web.UI.WebControls.DataGridCommandEventArgs   e)  
  {  
  DataGrid1.EditItemIndex=e.Item.ItemIndex;  
  DataGrid1.DataBind();  
  }  
  编译失败。Top

3 楼icyer()回复于 2002-11-22 17:07:27 得分 0

DataGrid/DataList里的控件怎么能直接访问?  
   
  DataGrid   grid   =   (DataGrid)DataList1.Items[0].FindControl("DataGrid1");  
  grid.EditItemIndex   =   e.ItemIndex;  
  grid.DataSource   =   ..;  
  grid.DataBind();  
  Top

4 楼blackcatiii(能教我做框架设计吗)回复于 2002-11-25 11:09:33 得分 0

根据你给的方法只能时编辑界面出现在DataList的第一行,可能是由于DataList1.Items[0].FindControl("DataGrid1")只能定位到第一行DataList,因此编辑也就只能在第一行出现的原因。如何确定编辑时的DataGrid所在的DataList行?  
  我想点其他行的相应DataGrid会在对应的DataList行显示界面。就是说,如果datalist有2行,第1行datalist内的datagrid1有5行,第2行datalist内的datagrid2有2行,我想在点datagird2的第2行时编辑界面能显示在datalist的第二行中,而不是现在的datalist的第一行。Top

5 楼icyer()回复于 2002-11-25 13:10:40 得分 0

DataGrid   grid   =   (DataGrid)source;  
  grid.EditItemindex   =   e.Item.ItemIndex;  
  grid.DataSource   =   ...;  
  grid.DataBind();  
  Top

6 楼blackcatiii(能教我做框架设计吗)回复于 2002-11-25 13:22:39 得分 0

你这里的e是指DataGrid还是DataList?  
  如果是DataGrid,怎么获得DataList的当前行?  
  如果是DataList,怎么获得DataGrid的要编辑的行位置?Top

7 楼icyer()回复于 2002-11-25 13:37:28 得分 0

上面的代码在DataGrid的EditCommand事件中写的,e是函数中的参数。  
   
  读取DataList当前行的方法:  
  DataListItem   item   =   (DataListItem)grid.NamingContainer;  
  Response.Write(item.ItemIndex.ToString());  
   
  Top

8 楼blackcatiii(能教我做框架设计吗)回复于 2002-11-25 15:17:54 得分 0

天哪,我已经是第4次提交了:(  
  你的办法有个问题:  
  DataListItem   item   =   (DataListItem)grid.NamingContainer;  
  但grid需要先生成,而grid的生成又需要指定DataList的Items。  
  这和鸡与蛋的问题差不多哦:)  
  DataGrid   grid=(DataGrid)DataList1.Items[0].FindControl("DataGrid1");  
  Top

9 楼blackcatiii(能教我做框架设计吗)回复于 2002-11-25 15:19:14 得分 0

总算写上去了。  
  csdn怎么这么慢啊?Top

10 楼icyer()回复于 2002-11-25 16:14:49 得分 0

我不知道你什么意思。  
  在DataList绑定的时候,会设定DataList的行数、显示其他数据,然后你再依次绑定DataList里每一行的DataGrid。  
  执行DataGrid的EditCommand事件的时候,DataList有了,DataGrid也有了。Top

11 楼blackcatiii(能教我做框架设计吗)回复于 2002-11-25 16:23:43 得分 0

我的意思就是要在编辑某个DataGrid的某行时能知道它应该是哪个DataList.Item,现在我编辑的时候总无法得到对应的DataList.Item,所以我不知道该往DataGrid   grid   =   (DataGrid)DataList1.Items[0].FindControl("DataGrid1");的Items[]中填什么数字。如果是0就只会在第1行里显示编辑状态,即使我是在DataList的其他行里编辑的。Top

12 楼icyer()回复于 2002-11-25 16:46:14 得分 0

在DataGrid的EditCommand事件中,首先用  
  DataGrid   grid   =   (DataGrid)source;  
  来得到当前的DataGrid,然后用  
  DataListItem   item   =   (DataListItem)grid.NamingContainer;  
  来得到当前DataGrid在DataList中的行。  
   
  现在还有什么不能得到的?  
  Top

13 楼blackcatiii(能教我做框架设计吗)回复于 2002-11-25 17:18:22 得分 0

source怎么定义?  
  我现在脑子一团浆糊:(Top

14 楼icyer()回复于 2002-11-25 18:28:55 得分 50

protected   void   grid_EditCommand(object   source,   DataGridCommandEventArgs   e)  
  {  
  DataGrid   grid   =   (DataGrid)source;  
  grid.EditItemindex   =   e.Item.ItemIndex;  
  grid.DataSource   =   ...;  
  grid.DataBind();  
   
  DataListItem   item   =   (DataListItem)grid.NamingContainer;  
  Response.Write(item.ItemIndex.ToString());  
  }  
  Top

15 楼blackcatiii(能教我做框架设计吗)回复于 2002-11-25 18:38:16 得分 0

哎呀,我居然把这个参数给忘了,太谢谢了。Top

相关问题

  • 在datagrid里是否有和repeater或datalist相似的模板??请指教?
  • datagrid模板列的问题
  • DataGrid中模板列问题
  • datagrid 增加RadioButtonList模板列?
  • DataGrid的模板列问题?
  • datagrid模板列问题???
  • datagrid模板列问题!急
  • DataGrid的模板列问题
  • DataGrid模板列问题
  • 请教:关于数据绑定到(datagrid,datalist)模板(<ItemTemplate>)获取的字符串怎样转换的问题

关键词

  • datagrid
  • grid
  • 界面
  • source
  • datalist
  • datalistitem
  • editcommand
  • namingcontainer
  • itemindex
  • 编辑

得分解答快速导航

  • 帖主:blackcatiii
  • icyer

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo