标题:[求助]Repeater1_ItemDataBound
只看楼主
mlrh3838
Rank: 1
等 级:新手上路
威 望:1
帖 子:199
专家分:0
注 册:2007-6-14
 问题点数:0 回复次数:9 
[求助]Repeater1_ItemDataBound

protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
ImageButton lb = (ImageButton)e.Item.FindControl("IbOK");
TextBox tb = (TextBox)e.Item.FindControl("c1nub1");

if (lb.OnClientClick)
{
string str = tb.Text;
//.......... 更改数据库记录省略
}

}
}

ImageButton 触发后 取 Repeater1 中 当前行的 TextBox 值 有谁知道蓝色部分该怎么写吗

搜索更多相关主题的帖子: Item TextBox FindControl ImageButton 
2007-11-17 17:20
冰彩虹
Rank: 4
来 自:上海
等 级:贵宾
威 望:14
帖 子:806
专家分:44
注 册:2007-6-28
得分:0 
如果你只需要当前行TextBox值,在蓝色部分:lb.ToolTip = tb.Text;把TextBox的值绑定给ImageButton一个可绑定的属性,然后在ImageButton事件里获取这个属性值就是TextBox的值

如果需要获取当前行其他列的值,可以在Repeater1_ItemDataBound里把e.Index属性绑定给ImageButton,然后在ImageButton事件里获取Index,根据Index获取Repeater的整行记录

Flying without wings
2007-11-17 20:00
mlrh3838
Rank: 1
等 级:新手上路
威 望:1
帖 子:199
专家分:0
注 册:2007-6-14
得分:0 
如果需要获取当前行其他列的值,可以在Repeater1_ItemDataBound里把e.Index属性绑定给ImageButton,然后在ImageButton事件里获取Index,根据Index获取Repeater的整行记录

版主能不能具体说下,怎样写 Repeater1_ItemDataBound ,例如:

<ItemTemplate>
<tr>
<td>
<asp:TextBox ID="c1nub1" runat="server" Width="40"></asp:TextBox>
</td>
<td>
<asp:TextBox ID="c1nub2" runat="server" Width="40"></asp:TextBox>
</td>
<td style="background-color: #f0fff0;" align="center">
<asp:ImageButton ID="IbOK" runat="server" CommandName='<%# DataBinder.Eval(Container.DataItem, "id")%>'
OnCommand="IbOK_Click" BorderWidth="0" AlternateText="提交" ImageUrl="../Images/edit.gif"
CausesValidation="false" />

</td>
</tr>
</ItemTemplate>

两个TextBox ,取出两个值 ,然后在 ImageButton 事件中进行 相加 输出


2007-11-19 09:58
bygg
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:乖乖的心中
等 级:版主
威 望:241
帖 子:13555
专家分:3076
注 册:2006-10-23
得分:0 
if (lb.OnClientClick)
{
string str = tb.Text;
//.......... 更改数据库记录省略
}
你这里都把文本框中的值取出来了,就写个更新数据的SQL语句就行了啊

飘过~~
2007-11-19 10:34
mlrh3838
Rank: 1
等 级:新手上路
威 望:1
帖 子:199
专家分:0
注 册:2007-6-14
得分:0 

我原来也是这么想的,可是不行
if (lb.OnClientClick)
{
Response.Write(tb.Text);
}

if (lb.OnClientClick) 这个地方报错 "无法将 string 隐式转换成 bool


2007-11-19 10:49
bygg
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:乖乖的心中
等 级:版主
威 望:241
帖 子:13555
专家分:3076
注 册:2006-10-23
得分:0 
if(lb.OnClientClick != null)
{
}

飘过~~
2007-11-19 11:08
mlrh3838
Rank: 1
等 级:新手上路
威 望:1
帖 子:199
专家分:0
注 册:2007-6-14
得分:0 
if (lb.OnClientClick != null)
{
Response.Write(tb.Text);
}

取不到值啊,空的,郁闷

2007-11-19 13:56
mlrh3838
Rank: 1
等 级:新手上路
威 望:1
帖 子:199
专家分:0
注 册:2007-6-14
得分:0 

谢谢版主,可能在这个方法不能设现

protected void IbOK_Click(object sender, CommandEventArgs e)
{
//int itemId = int.Parse(e.CommandName);
string str1 = ((TextBox)Repeater1.Items[0].Controls[5]).Text;

Response.Write(clsJS.resJs_alert(str1));
}
这样子倒是可以,但只能取列表中第一行输入的值, 版主能不能帮改下,非常感谢


2007-11-19 14:30
bygg
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:乖乖的心中
等 级:版主
威 望:241
帖 子:13555
专家分:3076
注 册:2006-10-23
得分:0 
前面你好像发了一个关于取到当前行的帖子吧?

飘过~~
2007-11-19 16:16
mlrh3838
Rank: 1
等 级:新手上路
威 望:1
帖 子:199
专家分:0
注 册:2007-6-14
得分:0 

其实我想要实现一个库存的存入操作

如数据库 Table

ID Name Num
---- ------- -------
1 A产品 10
2 B产品 20
3 C产品 30


Repeater1 中显示如下

A产品 10 TextBox LinkButton
B产品 20 TextBox LinkButton
C产品 30 TextBox LinkButton

在TextBox中输入一个数值 点击 LinkButton后 能把原库存数加上TextBox中数值后,更新数据库


2007-11-20 11:31



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-186781-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.120511 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved