fang fa 1. keyi zai javascript jiaoben li xie javascipt function fun(str) { window.open("111.aspx?id=" + str,_blank); } <datalist ..> <itemtimple> <asp:lable ....><%# datacontainer.eval(dataitem,"..")%></asp:lable> <asp:button onclick="fun(<%#datacontainer.eval(dataitem,"..")%>)"></asp:button> <itemtemple> </datalist>jiu keyi le asp:button hao xiang mei you onclick hui bao cuo ni jiu zai cs li xie this.button1.attrbute.add("onclick","fun(<%#datacontainer.eval(dataitem,"..")%>)"); huo zhe ni jie yong html de button
fang fa 2 zai hou tai xie gen datagride yi yang
虽然看明白了,但是我真的想哭啊李月亮同学~~~以后我当你的翻译!!!=。=!! I know your name is Lee_Moon,hihi能否借用datalist的什么索引之类的来弄这个吗?
主要是要弄清楚事件发生的条件啊, 我原来也发生过类似的问题,写在itemcommand里面,自认为这个是默认事件,想当然的可以发生冒泡。 结果和你的问题是一样的。当DataList/datagrid or rp 中,你添加LinkButton ,点了之后,是发生提交事件,也就是说页面重新刷新了,所有代码又初始了。所以只有写在itemdatabound里面,当数据绑定的时候,就进行取值。
OR getElementById()
javascipt
function fun(str)
{
window.open("111.aspx?id=" + str,_blank);
}
<datalist ..>
<itemtimple>
<asp:lable ....><%# datacontainer.eval(dataitem,"..")%></asp:lable>
<asp:button onclick="fun(<%#datacontainer.eval(dataitem,"..")%>)"></asp:button>
<itemtemple>
</datalist>jiu keyi le
asp:button hao xiang mei you onclick hui bao cuo
ni jiu zai cs li xie
this.button1.attrbute.add("onclick","fun(<%#datacontainer.eval(dataitem,"..")%>)");
huo zhe ni jie yong html de button
zai hou tai xie
gen datagride yi yang
I know your name is Lee_Moon,hihi能否借用datalist的什么索引之类的来弄这个吗?
private void DataList1_ItemCommand(object source, System.Web.UI.WebControls.DataListCommandEventArgs e)
{
if(e.CommandName=="addtocart")
{
string value=((Label)e.Item.FindControl("Label1")).Text;
}
}
要传给下面的按钮可以用Session保存,或者定义一个页面级的变量
if(e.CommandName=="addtocart")
{
string value=((Label)e.Item.FindControl("Label1")).Text;
}
添进去就可以了
ItemCommand允许在DataList中自定义事件,并且通过CommandName来控制
这句没有获得Lable1的text属性值,真的!!-_-"
类似这样,但是却不能把Lable1原有的值保存到一个变量里,咋回事么
{
if (e.CommandName == "transform_str")
{
((Label)e.Item.FindControl("Label1")).Text = "123456";
//如果放在DataList1_ItemCreated事件里还能把Lable1的text给改了,放这里根本不起作用,但不论放到哪个事件里,类似: string value=((Label)e.Item.FindControl("Label1")).Text;这种付值的都不管用 } }
下面是aspx页面datalist里模板项里的
<asp:Button ID="delete" runat="server" Text="删除留言" Font-Size="Smaller" Visible="False" OnClick="delete_Click" CommandName="transform_str"/><asp:Label ID="Label1" runat="server"><%# DataBinder.Eval(Container.DataItem, "messid")%></asp:Label>
<asp:Label ID="Label1" text='<%# DataBinder.Eval(Container.DataItem,....)%>' runat="server"></asp:Label>
这样就可以了
但是
string value=((Label)e.Item.FindControl("Label1")).Text;
他打死就是显示空值,他就是不能把40或者41或者…………付给value,我要去跳楼!
写在哪个方法里了?
设断点看方法有没有被调用;
{
if (e.CommandName == "transform_str")
{
string a3212421 = ((Label)e.Item.FindControl("Label1")).Text;
Response.Write(a3212421);
} }
这样写的,该方法不被调用,于是写到protected void DataList1_ItemCreated(object sender, DataListItemEventArgs e)
里了,该方法绝对被调用,设断点察看a3212421 ="" ,我都Response.Write了,不行,但是如果
((Label)e.Item.FindControl("Label1")).Text = "12345678";倒是可以把Lable1.Text给改掉
dim Linkaa as LinKButton
Linkaa = e.item.e.Item.FindControl("LinkButton1")dim strText as string
strText = Linkaa.text值取到了
protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
string a3212421 = "1111";
a3212421 = ((Label)e.Item.FindControl("Label1")).Text;
Response.Write(a3212421);
}
}这样,我终于取到了朝思暮想的正确得值,结贴,感谢各位的关注!!!
我原来也发生过类似的问题,写在itemcommand里面,自认为这个是默认事件,想当然的可以发生冒泡。
结果和你的问题是一样的。当DataList/datagrid or rp 中,你添加LinkButton ,点了之后,是发生提交事件,也就是说页面重新刷新了,所有代码又初始了。所以只有写在itemdatabound里面,当数据绑定的时候,就进行取值。
1、如果还在本页面显示数据,注意 postback 与 !postback (如更新数据)
2、e.commandname 的取值最好避开关键字,如:add delete update 等。否则会出错,不信就试试吧。
3、传递值:session cookie params(querystring form)等,什么好还得看情况
leemoon is my name ,it has the same pronounce with my chinese name.
my family name is wang.