如何为嵌套在DataList内部的DataGrid注册事件???高手请赐教
根据业务需要在DataList中嵌套2个DataGrid,每个DataGrid都需要编辑删除功能,我在DataList的Init和Load方法中试过,Init根本就不执行,Load方法执行时还找不到DataGrid(我的DataGrid是直接写在DataList的模板列中的)。不知道能不能实现这个功能,很着急,望高手不吝赐教!!! 问题点数:100、回复次数:5Top
1 楼Truly()回复于 2005-01-03 20:28:49 得分 50
<%@ Page language="c#" Codebehind="WebForm8.aspx.cs" AutoEventWireup="false" Inherits="DEMO1.WebForm8" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<TITLE>WebForm8</TITLE>
<META name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
<META name="CODE_LANGUAGE" content="C#">
<META name="vs_defaultClientScript" content="JavaScript">
<META name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<BODY ms_positioning="GridLayout">
<FORM id="Form1" method="post" runat="server">
<ASP:DATALIST id="DataList1" runat="server">
<ITEMTEMPLATE>
<ASP:DATAGRID id="test" runat="server">
<COLUMNS>
<ASP:TEMPLATECOLUMN>
<ITEMTEMPLATE>
<ASP:BUTTON id="tt" runat="server" onclick="DeleteCommand" text="删除" />
</ITEMTEMPLATE>
</ASP:TEMPLATECOLUMN>
</COLUMNS>
</ASP:DATAGRID>
</ITEMTEMPLATE>
</ASP:DATALIST>
</FORM>
</BODY>
</HTML>Top
2 楼Truly()回复于 2005-01-03 20:30:56 得分 50
#region Web 窗体设计器生成的代码
...
#endregion
private void Page_Load(object sender, System.EventArgs e)
{
ArrayList al = new ArrayList();
al.Add(1);
al.Add(2);
DataList1.DataSource = al;
DataList1.DataBind();
}
private void DataList1_ItemDataBound(object sender, System.Web.UI.WebControls.DataListItemEventArgs e)
{
DataSet ds = new DataSet();
SqlDataAdapter cmd = new SqlDataAdapter("select * from employees", new SqlConnection("server=.;database=northwind;uid=sa;pwd=;"));
cmd.Fill(ds);
DataGrid test = e.Item.FindControl("test") as DataGrid;
test.DataSource = ds;
test.DataBind();
}
protected void DeleteCommand(object sender, System.EventArgs e)
{
Button btn = sender as Button;
DataGridItem item = btn.Parent.NamingContainer as DataGridItem;
Response.Write("DataGrid项索引:" + item.ItemIndex);
DataListItem item2 = item.Parent.Parent.NamingContainer as DataListItem;
Response.Write("<br>父DataList项索引:" + item2.ItemIndex);
}Top
3 楼Truly()回复于 2005-01-03 20:32:30 得分 0
请自行添加容错判断Top
4 楼lingyang(羽客)回复于 2005-01-04 16:45:17 得分 0
非常感谢!还有一个问题请教:在编辑行的时候要获取数据集中的某行某列的值,有一个写法是:
int id = int.Parse(dataGrid1.DataKeys[e.Item.ItemIndex].ToString());
还有一种写法:
int id = this.Ds1.employee[e.Item.ItemIndex].emp_id;
但有时候第一种写法会报错,说dataGrid1.DataKeys的数组索引越界,百思不得其解,还请高手指点!
Top
5 楼Truly()回复于 2005-01-04 19:55:09 得分 0
dataGrid1.DataKeys的数组索引越界
多为未指定datakeyfield
或者e.item.index值不对,
输出或跟踪一下e.item.index的值与datagrid1.Items.count比较一下Top
相关问题
- datalist嵌套RadioButtonList
- 嵌套的datagrid?
- datagrid嵌套
- 请教:DataList中嵌套DataGrid,如何控制DataGrid分页
- 如何在DataList嵌套DataGrid中,读取DataGrid的数据.
- 可不可以用datalist或者datagrid嵌套显示的表啊?
- 求datagrid,repeater或datalist三级嵌套代码或教程。
- (新手虚心提问!)Datalist中嵌套一个Datagrid
- 讨论:datagrid、datalist、Repeater相互嵌套的效率问题(100分)
- 讨论:datagrid、datalist、Repeater相互嵌套的效率问题(100分)





