如何获取里面datagrid的按钮事件?
解决方案 »
- 诡异的401.2错误 还是没有解决
- 前台Textbox弹出窗口选择供应商返回页面,如何再次触发gridview的RowDataBound事件?
- 在应使用条件的上下文(在 'Proj' 附近)中指定了非布尔类型的表达式。
- [asp.net]请问如何在页面上嵌入OFFICE word
- 菜鸟问关于简单留言板的制作
- 高分请教 新页面中打开的页面影响原页面的问题
- HyperLink的链接问题 在线等即答即给分!救命!
- HtmlFileInput上传控件的上传图片问题.
- 后台生成的字符串导出到excel
- 好奇怪的问题啊。!!!
- 搞了两天不明白,一个小问题
- 怎么使用DataTable的问题?数据如何叠加在一起?
首先是控件,这个web控件里面可以只放一个DataGrid,它的按钮事件就可以处理了:
<%@ Control Language="c#" AutoEventWireup="false" Codebehind="ChildDataList.ascx.cs" Inherits="bsTest2005_8_16.Samples.ChildDataList" TargetSchema="http://schemas.microsoft.com/intellisense/ie5"%>
<asp:TextBox id="TextBox1" runat="server" Width="416px"></asp:TextBox>
<asp:DataList ID="dlResourcesIn" runat="server" RepeatColumns="1" Width="100%">
<ItemTemplate>
<table width='100%' cellspacing='0' cellpadding='0' border='0'>
<tr bgcolor="#ffffcc">
<td width='40%' align="left" valign='middle'><%# DataBinder.Eval(Container.DataItem, "Datavalue")%></td>
<td width='15%' align="center" valign='middle'><%# DataBinder.Eval(Container.DataItem, "LanguageName")%></td>
<td width='15%' align="center" valign='middle'>
<asp:LinkButton ID="Linkbutton3" runat="server" Text="<img src=../images/modify.gif border=0 alt='Edit'/>"
CommandName="EDIT" CausesValidation="false"></asp:LinkButton>
</td>
<td width='15%' align="center" valign='middle'>
<asp:LinkButton ID="Linkbutton4" runat="server" Text="<img src=../images/delete.gif border=0 alt='Delete'/>"
CommandName="DEL" CausesValidation="false"></asp:LinkButton>
</td>
<td width='15%' align="center" valign='middle'> </td>
</tr>
</table>
</ItemTemplate>
</asp:DataList>
namespace bsTest2005_8_16.Samples
{
using System;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls; /// <summary>
/// ChildDataList 的摘要说明。
/// </summary>
public class ChildDataList : System.Web.UI.UserControl
{
protected System.Web.UI.WebControls.TextBox TextBox1;
protected System.Web.UI.WebControls.DataList dlResourcesIn; private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
} public void BindData(string curID)
{
DataTable dt1 = new DataTable();
dt1.Columns.Add("id");
dt1.Columns.Add("Datavalue");
dt1.Columns.Add("LanguageName");
dt1.Rows.Add(new object[]{curID,curID+"AAA","3t2342"});
dt1.Rows.Add(new object[]{curID,curID+"BBB","23rs43342"});
dt1.Rows.Add(new object[]{curID,curID+"CCC","325r342"});
dt1.Rows.Add(new object[]{curID,curID+"AAA","nrds6y342"}); this.dlResourcesIn.DataSource = dt1;
this.dlResourcesIn.DataBind();
} private void dlResourcesIn_ItemCommand(object source, System.Web.UI.WebControls.DataListCommandEventArgs e)
{
if(e.CommandName == "EDIT")
this.TextBox1.Text = e.CommandName +"--"+ DateTime.Now.ToString();
else if(e.CommandName == "DEL")
this.TextBox1.Text = e.CommandName +"--"+ DateTime.Now.ToString();
} #region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器
/// 修改此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.dlResourcesIn.ItemCommand += new System.Web.UI.WebControls.DataListCommandEventHandler(this.dlResourcesIn_ItemCommand);
this.Load += new System.EventHandler(this.Page_Load); }
#endregion }
}
<%@ Register TagPrefix="uc1" TagName="ChildDataList" Src="ChildDataList.ascx" %>
<%@ Page language="c#" Codebehind="ChildDataList的父页面.aspx.cs" AutoEventWireup="false" Inherits="bsTest2005_8_16.Samples.ChildDataList的父页面" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>ChildDataList的父页面</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="dlResourcesOut" runat="server" Width="100%" RepeatColumns="1">
<ItemTemplate>
<TR>
<TD class="tdrow1" valign="middle" align="left" width="40%"><%# DataBinder.Eval(Container.DataItem, "Datavalue")%></TD>
<TD class="tdrow2" valign="middle" align="center" width="15%"><%# DataBinder.Eval(Container.DataItem, "LanguageName")%></TD>
<TD class="tdrow1" valign="middle" align="center" width="15%">
<asp:LinkButton id="Linkbutton1" runat="server" CausesValidation="false" CommandName="EDIT" Text="<img src=../images/modify.gif border=0 alt='Edit'/>"></asp:LinkButton></TD>
<TD class="tdrow2" valign="middle" align="center" width="15%">
<asp:LinkButton id="Linkbutton2" runat="server" CausesValidation="false" CommandName="DEL" Text="<img src=../images/delete.gif border=0 alt='Delete'/>"></asp:LinkButton></TD>
<TD class="tdrow1" valign="middle" align="center" width="15%"><IMG style="CURSOR: hand" height="17" src="../images/p_down.gif" width="17">
<uc1:ChildDataList id="ChildDataList1" runat="server"></uc1:ChildDataList></TD>
</TR>
<TR>
<TD colspan="5"></TD>
</TR>
</ItemTemplate>
</asp:datalist>
</form>
</body>
</HTML>
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;namespace bsTest2005_8_16.Samples
{
/// <summary>
/// ChildDataList的父页面 的摘要说明。
/// </summary>
public class ChildDataList的父页面 : System.Web.UI.Page
{
public System.Web.UI.WebControls.DataList dlResourcesOut;
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if(!IsPostBack) this.BindData();
} private void BindData()
{
DataTable dt1 = new DataTable();
dt1.Columns.Add("id");
dt1.Columns.Add("Datavalue");
dt1.Columns.Add("LanguageName");
dt1.Rows.Add(new object[]{111,"111","ASD"});
dt1.Rows.Add(new object[]{222,"222","GEW"});
dt1.Rows.Add(new object[]{333,"333","BER"});
dt1.Rows.Add(new object[]{444,"444","NER"}); this.dlResourcesOut.DataSource = dt1;
this.dlResourcesOut.DataBind();
} private void dlResourcesOut_ItemDataBound(object sender, System.Web.UI.WebControls.DataListItemEventArgs e)
{
if(e.Item.ItemIndex>-1)
{
DataTable dt = this.dlResourcesOut.DataSource as DataTable;
ChildDataList tmp = e.Item.FindControl("ChildDataList1") as ChildDataList;
tmp.BindData(dt.Rows[e.Item.ItemIndex][0].ToString());
}
}
#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.dlResourcesOut.ItemDataBound += new System.Web.UI.WebControls.DataListItemEventHandler(this.dlResourcesOut_ItemDataBound);
this.Load += new System.EventHandler(this.Page_Load); }
#endregion
}
}
例如上面例子中
public void BindData(string curID)
{
//curID是从主页面传过来的“当前行id”,如果需要保存起来,则
ViewState[this.CLientID + "_curID"] = curID;
}
也可以写成一个属性,那么从控件外部也可以随时设置或获取它的值
public string CurID
{
get{return (ViewState[this.CLientID + "_curID"]==null )?string.Empty:ViewState[this.CLientID + "_curID"].ToString();
}
set
{
ViewState[this.CLientID + "_curID"] =value;
}
}
按照你的方法,我引用
ProcessInfo ucPro = (ProcessInfo)e.Item.FindControl("ucPro");
ProcessInfo是我的usercontrol的类名
编译无法通过
'ProcessInfo' is an ambiguous reference
2)using 控件所在的命名空间;