怎么获取DataList中的TextBox的值?

CodeShow 2008-09-16 03:12:37
如下:
<asp:DataList ID="DataList1" runat="server" OnItemCommand="DataList1_ItemCommand">
<ItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text='<%#Eval("content") %>' />
<asp:Button ID="Button1" CommandName="abc" runat="server" Text="提交" />

</ItemTemplate>
</asp:DataList>

我想点击一下Button1按钮就获得TextBox1的值,
请问该怎么写代码?
...全文
1015 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
划勒个水 2011-06-24
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 s32702 的回复:]
引用 3 楼 wxg22526451 的回复:
C# code protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
{
if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemT……
[/Quote]

这个必须的好
  • 打赏
  • 举报
回复
对于GridView等数据绑定控件,假设设计代码
        <Columns>
<asp:TemplateField HeaderText="yf">
<EditItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("yf") %>'></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("yf") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField ShowHeader="False">
<ItemTemplate>
<asp:Button ID="LinkButton1" runat="server" CausesValidation="false" onclick="Button1_Click" Text="click me"></asp:Button>
</ItemTemplate>
</asp:TemplateField>
</Columns>


那么在代码中可以写
    protected void Button1_Click(object sender, EventArgs e)
{
Button bt = sender as Button;
Label lb = bt.FindControl("Label1") as Label;
}

轻松获得Label1中的Text属性。
  • 打赏
  • 举报
回复
给你一个更为“外科手术式”的做法:

<asp:DataList ID="DataList1" runat="server" DataSourceID="ObjectDataSource1" >
<ItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text=' <%#Eval("content") %>' />
<asp:Button ID="Button1" runat="server" Text="提交" onclick="Button1_Click1" />
</ItemTemplate>
</asp:DataList>


//通过编辑模板,为按钮关联后台事件程序。
protected void Button1_Click1(object sender, EventArgs e)
{
Button bt = (Button)sender;
bt.Text = "文本:" + Server.HtmlEncode(((TextBox)bt.FindControl("TextBox1")).Text);
}


这里,你无需用Button去触发DataList,然后再用DataList去找内部控件。Button与它放在什么数据绑定控件内部无关,反正他就是寻找简单地放在它旁边的TextBox1控件就是了。这样设计更清晰。

另外,这里还说明了,FindControl并不是像许多人认为的那样是“向下查找子控件的”。实际上,从Button自身开始使用FindControl,就可以找到TextBox1。同样,例如在GridView中你从一个Cell中的某个控件开始使用FindControl方法也往往可以找到另一个Cell中的控件。FindControl的机制适合考察对asp.net技术的理解是否深入。
s32702 2008-09-16
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wxg22526451 的回复:]
C# code protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
{
if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
{
if (e.CommandName == "abc")//Button命令名称
{
TextBox tb = e.Item.FindControl("TextBox1") as TextBox;

[/Quote]

正确
pooyui 2008-09-16
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wxg22526451 的回复:]
C# code protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
{
if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
{
if (e.CommandName == "abc")//Button命令名称
{
TextBox tb = e.Item.FindControl("TextBox1") as TextBox;

[/Quote]
正解
浮生若梦丶 2008-09-16
  • 打赏
  • 举报
回复
.....up
CloudOfFly 2008-09-16
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wxg22526451 的回复:]
C# code protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
{
if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
{
if (e.CommandName == "abc")//Button命令名称
{
TextBox tb = e.Item.FindControl("TextBox1") as TextBox;

[/Quote]

赞同3楼
as54608451899 2008-09-16
  • 打赏
  • 举报
回复
protected void DataList_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
TextBox txtb=(TextBox)e.Item.FindControl("TextBox1");
if (txtb!= null)
{
... ...
}
}
wxg22526451 2008-09-16
  • 打赏
  • 举报
回复
  protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
{
if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
{
if (e.CommandName == "abc")//Button命令名称
{
TextBox tb = e.Item.FindControl("TextBox1") as TextBox;
Response.Write("值:" + tb.Text);
}
}

}
亦桐 2008-09-16
  • 打赏
  • 举报
回复
protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
{

if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
{
TextBox tt=(TextBox)e.Item.FindControl("TextBox1");

}
}
kyoybs 2008-09-16
  • 打赏
  • 举报
回复
在c#里吗? 用FindControl获取控件吧

62,075

社区成员

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

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

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

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