<asp:LinkButton id="DelButton" runat="server" visible='<%#CheckUser()%>' ...
....
private bool CheckUser()
{
if (Session["Admin"]!=null and Session["Admin"]!="xxx")
return true;
else
return false;
}ItemCreated:
if (e.Item.ItemType==ListItemType.Item)
{
LinkButton lb=(LinkButton)e.Item.FindControls("LinkButton");
lb.Attributes["onclick"]="return confirm('xxxxxxx');";
}
....
private bool CheckUser()
{
if (Session["Admin"]!=null and Session["Admin"]!="xxx")
return true;
else
return false;
}ItemCreated:
if (e.Item.ItemType==ListItemType.Item)
{
LinkButton lb=(LinkButton)e.Item.FindControls("LinkButton");
lb.Attributes["onclick"]="return confirm('xxxxxxx');";
}
2. 可以 ((LinkButton)repeater.FindControl("linkbuttonid")).Attributes["onclick"] = "JavaScript:return confirm_del();";
{
return confirm('您确信要删除' + UserName + '的留言吗?');
}我的数据库的表的结构是这样的:Table Message
(
ID,
UserName,
Message
)可以在ItemTemplate中用下面的方法得到 UserName 字段的内容。
<%# DataBinder.Eval(Container.DataItem,"UserName") %>我现在的问题是:如何在Repeater控件的ItemCreated中,把 UserName 做为 onClick 脚本的function confirm_del 一个参数传递进去。if (e.Item.ItemType==ListItemType.Item)
{
LinkButton lb=(LinkButton)e.Item.FindControls("LinkButton");
lb.Attributes["onclick"]="return confirm('xxxxxxx');";
}就是上面这段代码的'xxxxxxx'不是d固定的,而是根据当前 Item 的内容变化的。请问如何实现?
lb.Attributes["onclick"]="return confirm('xxxxxxx');";变成
lb.Attributes["onclick"]="return confirm_del('张三');";lb.Attributes["onclick"]="return confirm_del('李四);";这“张三”、“李四”就是数据库中表Message的UserName字段。请问大侠如何实现?
js function:function confirm_del(obj)
{
return confirm("***" + obj.name)
}
我这贴本来是打算问两个问题的,现在多出来一个。一会我会另开个贴子给分给你。你用的这个办法很巧妙的解决了我的上面的问题。实际上我的问题具有普遍性,我很想知道的是:
在Repeater控件的ItemCreated事件中,是不是可以得到当前Item的绑定数据?如果可以,应该如何实现?请大侠原谅我的鲁莽和无知。
在itemcreated 里
可以用 repeater.datakeys[e.item.itemindex] 获得这个 key,
则可以利用这个关键字在 datasource 那里查询到当前数据行
感谢SVG(ben) 辛勤劳动!我终于找到一个办法,比较理想地解决了这个问题。private void InitializeComponent()
{
....
this.Rp1.ItemDataBound += new System.Web.UI.WebControls.RepeaterItemEventHandler(this.Repeater1_ItemDataBound);
....
}
private void Repeater1_ItemDataBound(object source, System.Web.UI.WebControls.RepeaterItemEventArgs e)
{
if (e.Item.ItemType==ListItemType.Item)
{
LinkButton lb=(LinkButton)e.Item.FindControl("MyLB");
lb.Attributes["onClick"]="JavaScript:return confirm_del('" + DataBinder.Eval(e.Item.DataItem, "UserName") +"');return false;";
lb.Attributes["onClick3"]="JavaScript:return confirm_del('" + ((DataRowView)(e.Item.DataItem))["UserName"] +"');return false;";
}}
实际应用的时候只需要一种就可以了。DataBinder.Eval(e.Item.DataItem, "UserName") 这种方法使用简单。
((DataRowView)(e.Item.DataItem))["UserName"] 这种方法执行效率高。
这贴我给你分,表示您的得分贴。另开了一个100分的贴,请您去领。