用户控件中有DataList,DataList每行有一个Button,点击它让宿主页获得DataKeys[e.Item.ItemIndex] 我在用户控件中放了一个DataList,DataList根据宿主页中传来的参数进行数据绑定,这个已经不成问题,问题是,我在用户控件的DataList中加了一个按钮列,希望用户点击某行的按钮时,能把这行的主键传给宿主页。我这个需求并不过分,但实现起来一点思路也没有,例子在网上也搜不到,请高手指点。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在DataList加载数据的时候取得行主键ID,按钮打开宿主页加参数,例如xxx.aspx?ID=yyy在原宿主页打开,这样就相当于刷新了宿主页,同时传递参数ID 虽然写例子很辛苦,但解释清了这个问题可以普度一方啊,请一定用代码说明一下下面是我的用户控件:using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using System.Data.SqlTypes;using Model;using BLL;public partial class Controls_CtrlframeRolesInSchoolClass : System.Web.UI.UserControl{ private FrameFrameRoleWorkflow BLLFrameRole; private FrameFrameworkInfo FrameFramework4Parameter; private Dictionary<string, Object> Parameter; private SqlGuid _frameFrameworkID = SqlGuid.Null; private SqlGuid _frameFrameRoleID = SqlGuid.Null; public SqlGuid frameFrameworkID { get { return _frameFrameworkID; } set { _frameFrameworkID = value; Page_Load(null, null); } } public SqlGuid frameFrameRoleID { get { return _frameFrameRoleID; } set { _frameFrameRoleID = value; Page_Load(null, null); } } protected void Page_Load(object sender, EventArgs e) { FrameFramework4Parameter = new FrameFrameworkInfo(); Parameter = new Dictionary<string, object>(); Parameter.Add("FrameFrameworkInfo", FrameFramework4Parameter); BLLFrameRole = new FrameFrameRoleWorkflow(); DtLstframeRolesInSchoolClass_Bind(); } private void DtLstframeRolesInSchoolClass_Bind() { FrameFramework4Parameter.ID = frameFrameworkID; Parameter.Clear(); Parameter.Add("FrameFrameworkInfo", FrameFramework4Parameter); this.DtLstframeRolesInSchoolClass.DataSource = BLLFrameRole.ListFrameFrameRoles(Parameter); this.DtLstframeRolesInSchoolClass.DataBind(); if (this.DtLstframeRolesInSchoolClass.Items.Count == 0) { this.DtLstframeRolesInSchoolClass.ShowHeader = false; } } protected void DtLstframeRolesInSchoolClass_ItemCommand(object source, DataListCommandEventArgs e) { //提供成员角色编号和班级编号,用于在下页列出成员角色 if(e.CommandName == "Detail") { frameFrameRoleID = (SqlGuid)this.DtLstframeRolesInSchoolClass.DataKeys[e.Item.ItemIndex]; } }}其中DataList控件ID=“DtLstframeRolesInSchoolClass”,请问用户单击按钮的时候,怎么把DataKeys[e.Item.ItemIndex]送到宿主页去,谢谢。 用户控件设置属性按钮Button btn =sender as Button;DataListItem item = (sender as Button).NamingContainer as DataListItem;TextBox txt=btn.NamingContainer.FindControl("txt") as TextBox; 在用户空间中添加如下代码:目的是给用户空间弄个事件 声明一个代理 public delegate void MyDelegate(); //声明一个事件 public event MyDelegate MyEvent; 给你的按钮弄个事件 protected void Button1_Click(object sender, EventArgs e) { //调用事件 if(MyEvent!=null) { MyEvent(); } } public string DataKey { get { return 获取主键值代码; } }宿主页面中的代码protected void Page_Load(object sender, EventArgs e) {//然后再宿主页面中为改控件注册一个事件 YongHuControlcs1.MyEvent+=new UserControls_YongHuControlcs.MyDelegate(nn); } //代理函数 public void nn() { 此处你可以点击你的用户控件按钮,想做什么业务都行 TextBox1.Text = YongHuControlcs1.DataKey; } http://topic.csdn.net/u/20091112/09/342769c1-0abf-4f92-8699-7ac7d462e0cf.html 办法估计很多放HIDDEN了LABEL了,什么的,直接搞连接或者异步访问都行吧. 你的意思是说你在Datalist 控件里面再加一个Button 按钮吗? 是的话,我可能有个例子可能适合你,要的可以联系我 qq:823783931 session问题 asp.net active 水晶报表ReportDocument.SetDatabaseLogon函数的使用 关于音乐地址的问题。。。知道或者不知道的都来讨论下 请大侠帮我分析网页信息分析技术 大家推荐一下NHibernate的书吧, 最好是书店里面能买到的。 写法 xml新手,求教.net下取节点问题 datagrid 模板列的问题 讨论程序员的发展问题顶者有分。 windows7下,使用sqlserver2005,有没有必要安装SP3包?还想问一下,sqlserver2005能使用全文搜索功能么 母板页与iframe的问题
在原宿主页打开,这样就相当于刷新了宿主页,同时传递参数ID
下面是我的用户控件:using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlTypes;
using Model;
using BLL;public partial class Controls_CtrlframeRolesInSchoolClass : System.Web.UI.UserControl
{
private FrameFrameRoleWorkflow BLLFrameRole;
private FrameFrameworkInfo FrameFramework4Parameter;
private Dictionary<string, Object> Parameter;
private SqlGuid _frameFrameworkID = SqlGuid.Null;
private SqlGuid _frameFrameRoleID = SqlGuid.Null; public SqlGuid frameFrameworkID
{
get { return _frameFrameworkID; }
set
{
_frameFrameworkID = value;
Page_Load(null, null);
}
} public SqlGuid frameFrameRoleID
{
get { return _frameFrameRoleID; }
set
{
_frameFrameRoleID = value;
Page_Load(null, null);
}
} protected void Page_Load(object sender, EventArgs e)
{
FrameFramework4Parameter = new FrameFrameworkInfo();
Parameter = new Dictionary<string, object>();
Parameter.Add("FrameFrameworkInfo", FrameFramework4Parameter);
BLLFrameRole = new FrameFrameRoleWorkflow();
DtLstframeRolesInSchoolClass_Bind();
} private void DtLstframeRolesInSchoolClass_Bind()
{
FrameFramework4Parameter.ID = frameFrameworkID;
Parameter.Clear();
Parameter.Add("FrameFrameworkInfo", FrameFramework4Parameter);
this.DtLstframeRolesInSchoolClass.DataSource = BLLFrameRole.ListFrameFrameRoles(Parameter); this.DtLstframeRolesInSchoolClass.DataBind();
if (this.DtLstframeRolesInSchoolClass.Items.Count == 0)
{
this.DtLstframeRolesInSchoolClass.ShowHeader = false;
}
}
protected void DtLstframeRolesInSchoolClass_ItemCommand(object source, DataListCommandEventArgs e)
{
//提供成员角色编号和班级编号,用于在下页列出成员角色
if(e.CommandName == "Detail")
{
frameFrameRoleID = (SqlGuid)this.DtLstframeRolesInSchoolClass.DataKeys[e.Item.ItemIndex];
}
}
}其中DataList控件ID=“DtLstframeRolesInSchoolClass”,请问用户单击按钮的时候,怎么把DataKeys[e.Item.ItemIndex]送到宿主页去,谢谢。
按钮
Button btn =sender as Button;
DataListItem item = (sender as Button).NamingContainer as DataListItem;
TextBox txt=btn.NamingContainer.FindControl("txt") as TextBox;
声明一个代理
public delegate void MyDelegate();
//声明一个事件
public event MyDelegate MyEvent;
给你的按钮弄个事件
protected void Button1_Click(object sender, EventArgs e)
{
//调用事件
if(MyEvent!=null)
{
MyEvent();
} }
public string DataKey
{
get { return 获取主键值代码; }
}
宿主页面中的代码
protected void Page_Load(object sender, EventArgs e)
{//然后再宿主页面中为改控件注册一个事件 YongHuControlcs1.MyEvent+=new UserControls_YongHuControlcs.MyDelegate(nn);
}
//代理函数
public void nn()
{
此处你可以点击你的用户控件按钮,想做什么业务都行
TextBox1.Text = YongHuControlcs1.DataKey;
}