DataGrid里面牵讨DataGrid问题

Aa7643 2006-05-16 09:14:16
如何获取里面datagrid的按钮事件?
...全文
132 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Aa7643 2006-05-16
  • 打赏
  • 举报
回复
谢谢Eddie005(♂) 暴赱 『零零伍』(︶︵︶)
Aa7643 2006-05-16
  • 打赏
  • 举报
回复
错误找到了,是namespace的问题
Eddie005 2006-05-16
  • 打赏
  • 举报
回复
1)控件先编译一下;
2)using 控件所在的命名空间;
Aa7643 2006-05-16
  • 打赏
  • 举报
回复
TO Eddie005(♂) 暴赱 『零零伍』(︶︵︶)
按照你的方法,我引用
ProcessInfo ucPro = (ProcessInfo)e.Item.FindControl("ucPro");
ProcessInfo是我的usercontrol的类名
编译无法通过
'ProcessInfo' is an ambiguous reference
Eddie005 2006-05-16
  • 打赏
  • 举报
回复
并不会,lz可以把我上面的例子直接拷贝过去试一下就知道了

如果有些内容,是需要控件内部保存起来的,可以存到ViewState
例如上面例子中
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;
}
}
Aa7643 2006-05-16
  • 打赏
  • 举报
回复
我也这样做过,但是当点击按钮的时候,用户控件的内容会消失
Eddie005 2006-05-16
  • 打赏
  • 举报
回复
然后,主页面的DataGrid嵌套的是上面的web控件,
<%@ 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


}
}
Eddie005 2006-05-16
  • 打赏
  • 举报
回复
例子:
首先是控件,这个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

}
}
Eddie005 2006-05-16
  • 打赏
  • 举报
回复
在一个页面内并不好控制,建议使用web自定义控件
jQuery EasyUI是一组基于jQuery的UI插件集合,而jQuery EasyUI的目标就是帮助web开发者更轻松的打造出功能丰富并且美观的UI界面。开发者不需要编写复杂的javascript,也不需要对css样式有深入的了解,开发者需要了解的只有一些简单的html标签 1.3.6更新 Bug treegrid: getChecked方法不能返回正确的行. fixed. tree: 异步树,在onlyLeafCheck:true时复选框不显示正确. fixed. Improvement treegrid:继承datagrid组件所有的selecting和checking方法。 linkbutton:图标对齐方式,支持值:'top','bottom','left','right'。 linkbutton:添加"size"属性,支持值:'small','large'。 linkbutton:添加的onClick事件。 menubutton:添加"menuAlign"属性,允许用户设置顶级菜单对齐。 combo:添加"panelAlign"属性,支持值:'left','right'。 calendar:"formatter"、"styler"和"validator"选项可用于自定义日历日期。 calendar:添加的onChange事件。 panel:添加"method","queryParams"和"loader"属性。 panel:添加"onLoadError"事件。 datagrid:添加"onBeginEdit"事件。 datagrid:添加"onEndEdit"事件。 datagrid:添加"sort"方法和"onBeforeSortColumn"事件。 datagrid:"combogrid"编辑器集成到datagriddatagrid:添加"ctrlSelect"属性,允许使用ctrl+click 多选 slider:添加"converter"选项,允许用户决定如何将一个值转换为滑块的位置或滑块位置值。 searchbox:添加"disabled"属性。 searchbox:添加"disabled","enable","clear","reset"方法。 spinner:添加"readonly"属性、"readonly"方法和"onChange事件。

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧