DataList里的模板列为DataGrid时如何能编辑DataGrid模板列里的内容?
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="<img src=img/save.gif border=0 alt=保存 />" CancelText="<img src=img/upcancel.gif border=0 alt=取消 />" EditText="<img src=img/edit.gif border=0 alt=编辑 />">
</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




