如何获得Repeater中具体的值呢?

itstones 2011-04-12 10:47:35


点击“加为好友”后 获得name的值 (就是图片中的aaa,bbb,ccc,ddd)
但是 repeater中的值是通过SqlDataSource绑定的 所以不知道要怎么才能够知道点击“加为好友”后是点击的那个用户?


<asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSource1"
onitemdatabound="Repeater1_ItemDataBound">
<ItemTemplate>
<div class="tjmember">
<div class="tjmember_1 tl">
<div class="img">
<asp:Image ID="Image1" runat="server" ImageUrl='<%#Eval("Picture") %>' /></div>
<div class="text">
<div class="name">
<asp:Label ID="Label1" runat="server" Text='<%#Eval("Name") %>'></asp:Label></div>
<div class="des"><asp:Label ID="Label2" runat="server" Text='<%#Eval("Research") %>'></asp:Label></div>
<ul>
<li class="hy">
<asp:LinkButton ID="lkb_AddFriend" runat="server" OnClick="lkb_AddFriend_Click">加为好友</asp:LinkButton> </li>
<li class="jb"><a href="#">违规举报</a></li>
</ul>
</div>
</div>
</div>
</ItemTemplate>
</asp:Repeater>


后台代码:

protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
string RptLblValue="";
foreach (RepeaterItem p in Repeater1.Controls)
{
Label target = e.Item.FindControl("Label1") as Label;
RptLblValue = target.Text;
}
Response.Write(RptLblValue);
}

...全文
393 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
ljx09195117 2011-04-12
  • 打赏
  • 举报
回复
你贴出来的前台代码替换为下面的,其实就是在加为好友的LinkButton多加一个自定义属性eName='<%#Eval("Name") %>'同时多绑定一次

<asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSource1"
onitemdatabound="Repeater1_ItemDataBound">
<ItemTemplate>
<div class="tjmember">
<div class="tjmember_1 tl">
<div class="img">
<asp:Image ID="Image1" runat="server" ImageUrl='<%#Eval("Picture") %>' /></div>
<div class="text">
<div class="name">
<asp:Label ID="Label1" runat="server" Text='<%#Eval("Name") %>'></asp:Label></div>
<div class="des"><asp:Label ID="Label2" runat="server" Text='<%#Eval("Research") %>'></asp:Label></div>
<ul>
<li class="hy">
<asp:LinkButton ID="lkb_AddFriend" runat="server" OnClick="lkb_AddFriend_Click" eName='<%#Eval("Name") %>'>加为好友</asp:LinkButton> </li>
<li class="jb"><a href="#">违规举报</a></li>
</ul>
</div>
</div>
</div>
</ItemTemplate>
</asp:Repeater>



后台代码加上你LinkButton的事件,你本来有的话就把事件里面的代码复制进去就行,当众的String Name就是你要的点击加为好友的那一行的Name

protected void lkb_AddFriend_Click(object sender, EventArgs e)
{
string Name = ((LinkButton)sender).Attributes["eName"].ToString();

}


kingdom_0 2011-04-12
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 wx8849 的回复:]

C# code

<asp:Repeater ID="Repeater1" runat="server"
onitemcommand="Repeater1_ItemCommand">
<ItemTemplate>
<asp:Label ID="aaa" runat ="server" Text='<%……
[/Quote]
正解。
wx8849 2011-04-12
  • 打赏
  • 举报
回复
实在不知道你就在CommandArgument属性里面帮你的用户的ID按我前面给你的方法就能获取该用户的ID
wx8849 2011-04-12
  • 打赏
  • 举报
回复
搞不懂你就断点看看没次点击行的时候e的索引是不是变了~
wx8849 2011-04-12
  • 打赏
  • 举报
回复
CommandName会字段识别你点击行的索引
itstones 2011-04-12
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 wx8849 的回复:]
你前面的事件用错了的~要先知道你要做什么操作在选择事件
[/Quote]

还有问题啊,我这个Repeater里面的linkbutton 跟label是通过SqlDataSource绑定上去的啊,用你的那个方法的话 要怎么知道 我点击的这个,linkbutton是那个用户的呢?
wx8849 2011-04-12
  • 打赏
  • 举报
回复
你前面的事件用错了的~要先知道你要做什么操作在选择事件
b58585885 2011-04-12
  • 打赏
  • 举报
回复
LZ你好,这个可以有很多种解决办法,如果仔细、用心寻找的话,你会很好地解决这个问题的。
看了你给回复4楼的回复,我想你更需要知道一些东西,比这个问题重要的多!
首先,你要明确你所遇到的问题对你来说,最大的难点是什么,是什么阻碍了你逆序走下去。比如,在这个问题中“所以不知道要怎么才能够知道点击“加为好友”后是点击的那个用户?”应该是你当前的最大障碍了吧。因为解决不了这个,下面根本不能继续下去,什么讨论都是空谈。所以,你的重点应该是放在这个问题上。4楼是一种很特别的胆识可以解决这个问题的方法,其他楼也是。现在你应该想,我已经获得这个值了,以后该怎么办。
wx8849 2011-04-12
  • 打赏
  • 举报
回复
在if里面
wx8849 2011-04-12
  • 打赏
  • 举报
回复
就在itemcommand事件里面啊
  • 打赏
  • 举报
回复
CommandArgument='<%# Eval("name") %> 直接绑定。
itstones 2011-04-12
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 wx8849 的回复:]
C# code

<asp:Repeater ID="Repeater1" runat="server"
onitemcommand="Repeater1_ItemCommand">
<ItemTemplate>
<asp:Label ID="aaa" runat ="server" Text=……
[/Quote]


我这样的话 要在哪里写SQL语句 跟逻辑判断呢?
wx8849 2011-04-12
  • 打赏
  • 举报
回复

<asp:Repeater ID="Repeater1" runat="server"
onitemcommand="Repeater1_ItemCommand">
<ItemTemplate>
<asp:Label ID="aaa" runat ="server" Text='<%# Eval("Name") %>'></asp:Label>
<asp:LinkButton ID="LinkButton2" runat="server" CommandName="Select">LinkButton</asp:LinkButton>
</ItemTemplate>
</asp:Repeater>


protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
{
if (e.CommandName == "Select")
{
string name = (e.Item.FindControl("aaa") as Label).Text;
}
}


不用CommandArgument也可以
hch126163 2011-04-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wx8849 的回复:]

linkbutton 不需要事件
直接CommandName="Add" CommandArgument='<%# Eval("name") %>' linkbutton添加这2个属性
[/Quote]

用 CommandArgument 属性就好了

当然最好的还是使用ajax
treesky 2011-04-12
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 youyou052 的回复:]

引用 4 楼 wxr0323 的回复:
<asp:LinkButton ID="lkb_AddFriend" runat="server" OnClick="lkb_AddFriend_Click">加为好友</asp:LinkButton>

改成
<a href='Default.aspx?Uname=<%# Eval("Name")%>'>加为好友</a>

然后再Defaul……
[/Quote]
楼上的回答很正确。如果没有页面跳转就写个ajax。
itstones 2011-04-12
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 wxr0323 的回复:]
<asp:LinkButton ID="lkb_AddFriend" runat="server" OnClick="lkb_AddFriend_Click">加为好友</asp:LinkButton>

改成
<a href='Default.aspx?Uname=<%# Eval("Name")%>'>加为好友</a>

然后再Default.aspx
后台

Request……
[/Quote]


这是个好办法 ,可是我这里是没有页面可以跳转的啊,
我是想要点击后将一些数据存入到数据库中,并且还要判断是否已经提交了加为好友的请求。。

这个到底要怎么解决呢?
急死了都 搞了一个上午了
子夜__ 2011-04-12
  • 打赏
  • 举报
回复
<asp:LinkButton ID="lkb_AddFriend" runat="server" OnClick="lkb_AddFriend_Click">加为好友</asp:LinkButton>

改成
<a href='Default.aspx?Uname=<%# Eval("Name")%>'>加为好友</a>

然后再Default.aspx
后台

Request.QueryString["Uname"].ToString();
获取传递过来的NAME


itstones 2011-04-12
  • 打赏
  • 举报
回复
wx8849 2011-04-12
  • 打赏
  • 举报
回复
protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
{
if (e.CommandName == "Add")
{
string name = e.CommandArgument.ToString();
}
}
wx8849 2011-04-12
  • 打赏
  • 举报
回复
linkbutton 不需要事件
直接CommandName="Add" CommandArgument='<%# Eval("name") %>' linkbutton添加这2个属性
加载更多回复(2)

62,052

社区成员

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

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

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

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