如何获得Repeater传到后台的值?

julia_yl 2008-09-04 12:24:54
操作目的是将一条数据库的信息在aspx显示并可以编辑,然后在aspx.cs保存编辑。

file.aspx.cs
public partial class news : sql
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Repeater_news.DataSource = sqls.bind_news(15);
Repeater_news.DataBind();
}
}
public void Button_EDIT_Click(object sender, EventArgs e)
{
TextBox txt = ((TextBox)Repeater_news.FindControl("TextBox_title"));
string value = txt.Text;
//file1.aspx.cs 可以显示,但没有从file1.aspx中传过来值? 使用了Repeater和ItemTemplate
//file2.aspx.cs 没有显示,但有从file2.aspx中传过来值? 没有使用Repeater和ItemTemplate
//如何才能在aspx显示并可以编辑,然后在aspx.cs保存编辑?
}
...

file1.aspx
<form id="form2" runat="server">
<asp:Repeater ID="Repeater_news" runat="server">
<ItemTemplate>
<asp:TextBox ID="TextBox_title" runat="server" Text=' <%# Bind("title")%>> </asp:TextBox>
//显示了title="测试编辑后的数据更新"
</ItemTemplate>
</asp:Repeater>
<asp:Button ID="Button_EDIT" runat="server" Text="确定修改" OnClick="Button_EDIT_Click" />
</form>

file2.aspx
<form id="form2" runat="server">
<asp:TextBox ID="TextBox_title" runat="server" Text=' <%# Bind("title")%>> </asp:TextBox>
//显示了title="测试编辑后的数据更新"
<asp:Button ID="Button_EDIT" runat="server" Text="确定修改" OnClick="Button_EDIT_Click" />
</form>
...全文
163 18 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
julia_yl 2008-09-06
  • 打赏
  • 举报
回复
解决了,试了几种方式,其中一种适合
TextBox txt = ((TextBox)Repeater_news.FindControl("TextBox_title")).Text; //少了.Text
谢谢xghtom的提示,加分!
qq2013 2008-09-05
  • 打赏
  • 举报
回复
帮你顶啦!
早上好!
net_lhb 2008-09-05
  • 打赏
  • 举报
回复
up
julia_yl 2008-09-05
  • 打赏
  • 举报
回复
为什么使用Repeater,Formview等,就无法返回值,而不是使用Repeater,Formview等,就可以返回值?

file1.aspx
<form id="form2" runat="server">
<asp:Repeater ID="Repeater_news" runat="server">
<ItemTemplate>
<asp:TextBox ID="TextBox_title" runat="server" Text=' <%# Bind("title")%>> </asp:TextBox>
//显示了title="测试编辑后的数据更新,使用了Repeater,Formview等,可以显示但无法获得返回值"
</ItemTemplate>
</asp:Repeater>
<asp:Button ID="Button_EDIT" runat="server" Text="确定修改" OnClick="Button_EDIT_Click" />
</form>

file2.aspx
<form id="form2" runat="server">
<asp:TextBox ID="TextBox_title" runat="server" Text=' <%# Bind("title")%>> </asp:TextBox>
//显示了title="测试编辑后的数据更新,没有使用Repeater,Formview等,没有显示但可以获得返回值"
<asp:Button ID="Button_EDIT" runat="server" Text="确定修改" OnClick="Button_EDIT_Click" />
</form>
julia_yl 2008-09-05
  • 打赏
  • 举报
回复
使用Repeater,Formview结果一样
xghtom
TextBox tbx = (TextBox)e.Item.FindControl("tbxDesc"); (Repeater)
cteddy
TextBox txt = ((TextBox)FormView1.FindControl("TextBox_title")); (Formview)
出错?加了.ToString()
xghtom
TextBox tbx = (TextBox)e.Item.FindControl("tbxDesc").ToString(); (Repeater)
cteddy
TextBox txt = ((TextBox)FormView1.FindControl("TextBox_title")).ToString(); (Formview)

结果如下,奇怪?
System.Web.UI.WebControls.TextBox //返回了这段文字?

为什么使用Repeater,Formview等,就无法返回值,而不是使用Repeater,Formview等,就可以返回值?
file1.aspx
<form id="form2" runat="server">
<asp:Repeater ID="Repeater_news" runat="server">
<ItemTemplate>
<asp:TextBox ID="TextBox_title" runat="server" Text=' <%# Bind("title")%>> </asp:TextBox>
//显示了title="测试编辑后的数据更新,使用了Repeater,Formview等"
</ItemTemplate>
</asp:Repeater>
<asp:Button ID="Button_EDIT" runat="server" Text="确定修改" OnClick="Button_EDIT_Click" />
</form>

file2.aspx
<form id="form2" runat="server">
<asp:TextBox ID="TextBox_title" runat="server" Text=' <%# Bind("title")%>> </asp:TextBox>
//显示了title="测试编辑后的数据更新,没有使用Repeater,Formview等"
<asp:Button ID="Button_EDIT" runat="server" Text="确定修改" OnClick="Button_EDIT_Click" />
</form>
cteddy 2008-09-05
  • 打赏
  • 举报
回复
你们看看楼主的要求再回答

一条数据库的信息

楼主是要修改一条数据而已,你是不是根据ID传了个值修改数据啊

之要一句话就够了楼主,不要用Repeater

用Formview.呵呵

TextBox txt = ((TextBox)FormView1.FindControl("TextBox_title"));

就能找到了。哈哈,简单吧。

我发现我的理解力是很强的。楼主结帖吧
bsetsail 2008-09-04
  • 打赏
  • 举报
回复
foreach (RepeaterItem item in Repeater_news.Items)
{
TextBox txt = ((TextBox)item.FindControl("TextBox_title"));
}
xghtom 2008-09-04
  • 打赏
  • 举报
回复

protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
{
if (e.CommandName == "modify")
{
TextBox tbx = (TextBox)e.Item.FindControl("tbxDesc");
Response.Write(tbx.Text);
//Response.Redirect("file2.aspx?aa=" + tbx.Text);
}
}
xghtom 2008-09-04
  • 打赏
  • 举报
回复
没时间,瞎搞了点,看能不能给你点提示。

<body>
<form id="form1" runat="server">
<div>
<asp:Repeater ID="Repeater1" runat="server" OnItemCommand="Repeater1_ItemCommand">
<ItemTemplate>
<asp:TextBox ID="tbxDesc" Text='<%# DataBinder.Eval(Container.DataItem,"name") %>' runat="server"></asp:TextBox>
<asp:Button ID="btnSubmit" Text="修改" CommandName="modify" runat="server"></asp:Button>
</ItemTemplate>
</asp:Repeater>
<br/>
</div>
</form>
</body>



using System.Data.Odbc;

public partial class rtp_textbox : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Repeater1.DataSource = Bind().Tables[0];
Repeater1.DataBind();
}
}

private DataSet Bind()
{
string strcn = @"Dsn=ss7server;DataBase=NTP2000;uid=zxt2000;pwd=zxt2000;";
OdbcConnection mycn = new OdbcConnection(strcn);
string sql = "select * from ts_area";
mycn.Open();
OdbcDataAdapter myDa = new OdbcDataAdapter(sql, mycn);
DataSet myDs = new DataSet();
myDa.Fill(myDs, "s");
mycn.Close();
return myDs;
}

protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
{
if (e.CommandName == "modify")
{
TextBox tbx = (TextBox)e.Item.FindControl("tbxDesc");
Response.Redirect("file2.aspx?aa=" + tbx.Text);
}
}
}
julia_yl 2008-09-04
  • 打赏
  • 举报
回复
操作目的是将一条数据库的信息在aspx显示并可以编辑,然后在aspx.cs保存编辑。
如何书写file.aspx 和 file.aspx.cs? 例题如楼主提问
julia_yl 2008-09-04
  • 打赏
  • 举报
回复
if(!ISPOSTBACK)
{}
加在哪?
xghtom 2008-09-04
  • 打赏
  • 举报
回复
记得加上

if(!ISPOSTBACK)
{}
xghtom 2008-09-04
  • 打赏
  • 举报
回复
设计上有问题,或者你把有些东西省略没帖出来
建议TextBox、Button都放Repeater里面,Button做成ImageButton,放个图很好看
处理起来就很好办了

file2.aspx
<form id="form2" runat="server">
<asp:TextBox ID="TextBox_title" runat="server" Text=' <%# Bind("title")%>> </asp:TextBox>
//显示了title="测试编辑后的数据更新"
<asp:Button ID="Button_EDIT" runat="server" Text="确定修改" OnClick="Button_EDIT_Click" />
</form>



如果Button一定要在外面(界面、布局问题),Repeater里那么多(Item)项你怎么确定要在file2.aspx打开什么啊,你的file2.aspx里又才一个TextBox显示,建议Repeater里每项前可以用个radiobutton,Button打开页面传递ID到file2.aspx,file2.aspx里通过ID重新绑定数据!!

// 代码没有测试,只提供个方法
public void Button_EDIT_Click(object sender, EventArgs e)
{
foreach (RepeaterItem item in Repeater_news.Items)
{
RadioButton rbtn = ((RadioButton )item.FindControl("TextBox_title"));
if (rbtn.Checked)
{
//.................
//TextBox txt = ((TextBox)item.FindControl("TextBox_title"));
Response.Redirect(.....);
}
break;
}
}
julia_yl 2008-09-04
  • 打赏
  • 举报
回复
谢谢xghtom,Button在里/外都试过,仍然传不了值?
为什么
file1.aspx.cs 可以显示,但没有从file1.aspx中传过来值? 使用了Repeater和ItemTemplate
file2.aspx.cs 没有显示,但有从file2.aspx中传过来值? 没有使用Repeater和ItemTemplate

令人琢磨不定的Repeater和ItemTemplate
julia_yl 2008-09-04
  • 打赏
  • 举报
回复
谢谢楼上,报错
Failed to convert parameter value from a TextBox to a String.
QQmeiren 2008-09-04
  • 打赏
  • 举报
回复
还是看不懂
clever_yang 2008-09-04
  • 打赏
  • 举报
回复
用findcontrol可以找到TEXTBOX, LZ是不是想批操作啊???
xghtom 2008-09-04
  • 打赏
  • 举报
回复
有没有搞错,你的TextBox在Repeater里,而你的Button按钮在Repeater外
你点Button,想在file2.aspx 打开所有的记录啊

<form id="form2" runat="server">
<asp:Repeater ID="Repeater_news" runat="server">
<ItemTemplate>
<asp:TextBox ID="TextBox_title" runat="server" Text=' <%# Bind("title")%>> </asp:TextBox>
//显示了title="测试编辑后的数据更新"
</ItemTemplate>
</asp:Repeater>
<asp:Button ID="Button_EDIT" runat="server" Text="确定修改" OnClick="Button_EDIT_Click" />
</form>

62,243

社区成员

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

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

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

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