repeater问题 遍历repeater得到第三方控件TextBox,目的是修改文本框中的值,点击保存时得到的值并不是当前所输入的值,而是数据源中的原值,也就是数据并未更新,怎么得到输入的新值? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 for (int j = 0; j < rptPublish.Controls.Count; j++) { TextBox txtContent = rptPublish.Controls[j].FindControl("txtContent") as TextBox; res.MessageContent = txtContent.Text; dc.SaveChanges(); ui.Alert(this, "修改成功"); }我在点击保存时候,txtContent.Text的值还是原来那个,因为repeater还是之前那个数据源,有没有什么方法能得到你在文本框中新输入的值, res.MessageContent=Request.Form[txtContent..UniqueID] string txt = Request.Form[txtContent.UniqueID];这样获取到时空值 string txt = Request.Form[txtContent.UniqueID];这样获取到时空值空值,你前台代码是怎么写的? string txt = Request.Form[txtContent.UniqueID];这样获取到时空值空值,你前台代码是怎么写的? <asp:TextBox ID="txtContent" runat="server" TextMode="MultiLine" Width="605px" Height="220px" CssClass="inputTxt"></asp:TextBox>就很简单,repeater中一个文本框,后台给他赋值 TextBox txtContent = (TextBox)(dl.FindControl("txtContent")); txtContent.Text = item.MessageContent; <asp:Repeater ID="rp_01" runat="server" onitemdatabound="rp_01_ItemDataBound"> <ItemTemplate> <asp:TextBox ID="txtContent" runat="server" TextMode="MultiLine" Width="605px" Height="220px" CssClass="inputTxt"></asp:TextBox> </ItemTemplate> </asp:Repeater> protected void rp_01_ItemDataBound(object sender, RepeaterItemEventArgs e) { if (e.Item.ItemIndex >= 0) { TextBox txtContent = (TextBox)e.Item.FindControl("txtContent"); txtContent.Text = e.Item.ItemIndex.ToString(); } } protected void Button1_Click1(object sender, EventArgs e) { for (int j = 0; j < rp_01.Controls.Count; j++) { TextBox txtContent = (TextBox)rp_01.Controls[j].FindControl("txtContent"); string txt = Request.Form[txtContent.UniqueID]; Response.Write("值" + j + "=" + txt + "<br/>"); } Response.End(); }我这里是可以取到值的啊 string txt = Request.Form[txtContent.UniqueID];获取他还是null 你用 TexBox 生成 Html的时候 name 会变 Request。Form 当然取不到 值 TextBox txtContent = (TextBox)rp_01.Controls[j].FindControl("txtContent"); string txt = Request.Form[txtContent.UniqueID];这个联起来写? 说了 会变啊 楼主你 生成页面 然后 查看 源文件 看看 Textbox的 控件 name 这个 是 有规律的 你可以看看 ,看了 再去 获取 你要的 值 <asp:TextBox ID="txtContent" runat="server" TextMode="MultiLine" Width="605px" Height="220px" CssClass="inputTxt"></asp:TextBox>生成以后是textarea如果我直接用input,我要怎么现在repeater中找到他? <asp:TextBox ID="txtContent" runat="server" TextMode="MultiLine" Width="605px" Height="220px" CssClass="inputTxt"></asp:TextBox>生成以后是textarea如果我直接用input,我要怎么现在repeater中找到他?for (int j = 0; j < rptPublish.Controls.Count; j++) { TextBox txtContent = rptPublish.Controls[j].FindControl("txtContent") as TextBox; string txt = Request.Form[txtContent.UniqueID]; Response.Write("控件:" + txtContent.UniqueID + "=" + txt + "<br/>");} Response.End()这样看看出来的是什么? 出现个这:控件:rptPublish$ctl00$txtContent=可是 string txt = Request.Form[txtContent.UniqueID];还是为null 忘了说了,是在page_load事件里面的 for int i=0 i<rep1.items.count i++ textbox t=rep1.items[i].findcontrol("txtContent") as textbox; resp.write(t.text);手写的可能有错误,,一直这个模式 从来没有错误.. 我用了两种方法:1.通过LinkButton的按钮事件;2.通过<a></a>标签在page_load事件中通过参数 那你怎么提交和判断提交的?TextBox txtContent = rptPublish.Controls[j].FindControl("txtContent") as TextBox;提交的时候寻找这个控件,还是从原数据源的那个repeater中FindControl,他获取到的还是原来的数据,我觉得现在是要给获取到的这个文本框重新赋值就就可以。问题就是,此刻你获取不到你新输入的值? 那你怎么提交和判断提交的?TextBox txtContent = rptPublish.Controls[j].FindControl("txtContent") as TextBox;提交的时候寻找这个控件,还是从原数据源的那个repeater中FindControl,他获取到的还是原来的数据,我觉得现在是要给获取到的这个文本框重新赋值就就可以。问题就是,此刻你获取不到你新输入的值?当然是提交的时候找了,不提交是不会有Request.Form的,所以关键你的type是怎么来的,是Request.Form[]还是Request.QueryString[],这个很关键 那你怎么提交和判断提交的?TextBox txtContent = rptPublish.Controls[j].FindControl("txtContent") as TextBox;提交的时候寻找这个控件,还是从原数据源的那个repeater中FindControl,他获取到的还是原来的数据,我觉得现在是要给获取到的这个文本框重新赋值就就可以。问题就是,此刻你获取不到你新输入的值?当然是提交的时候找了,不提交是不会有Request.Form的,所以关键你的type是怎么来的,是Request.Form[]还是Request.QueryString[],这个很关键<a href="Edit.aspx?type=savezhu&MsgID=<%#Eval("MessageID") %>&MemID=<%#Eval("MemberID") %>">save</a> string type = Request.QueryString["type"]; 这个肯定是不行的,因为每次都是新的页面,rptPublish已经不是之前的rptPublish了 没有,他是同一个页面,rptPublish还是之前那个,你在获取文本框的值,他得到的还是原来的那个,没法得到新输入的。 小女子愚钝,能不能说细一点,谢谢需要用服务器控件来执行我用了LinkButton protected void lblPublish_Click(object sender, EventArgs e) { //MessageID MsgID = Convert.ToInt32(des.Decrypt(Request["MsgID"])); var res = (from a in dc.VM_INT_Message where a.MessageID == MsgID select a).FirstOrDefault(); if (res != null) { ////foreach (RepeaterItem dl in rptPublish.Items) ////{ for (int j = 0; j < rptPublish.Controls.Count; j++) { TextBox txtContent = rptPublish.Controls[j].FindControl("txtContent") as TextBox; res.MessageContent = txtContent.Text; //TextBox txtContent = (TextBox)(dl.FindControl("txtContent")); //res.MessageContent = txtContent.Text; dc.SaveChanges(); ui.Alert(this, "修改成功"); } } }还是不行的 - - ! res.MessageContent = txtContent.Text;改成 res.MessageContent=Request.Form[txtContent.UniqueID]; 小女子愚钝,能不能说细一点,谢谢需要用服务器控件来执行谢谢你的提醒,我弄出来了; TextBox txtContent = rptPublish.Controls[j].FindControl("txtContent") as TextBox; string txt = Request.Form[txtContent.UniqueID]; res.MessageContent = txt; txtContent.Text = res.MessageContent; dc.SaveChanges(); ui.Alert(this, "修改成功");这样就可以了。 怎么生成这样的表格 问一下WCF的问题 验证控件的集成问题 本人想做个网上项目交易市场,现在找思路,求大家帮忙!顶的也有分! 求救大虾 高分求助一个神秘问题。。。痛苦中 朋友给的一个FTP,怎样在我的页面中链接ftp中的资源呢?谢谢!(好像这个FTP不支持匿名登陆) 我是新手,拜请各位帮帮忙,急!!! 在线等,解决立即结帐,Javascript脚本的问题 一个奇怪问题,来看看,谢谢。 怎么把一个BUTTON的VALUE值传递到TEXTAREA光标处 【求vs2008反编译工具】
{
TextBox txtContent = rptPublish.Controls[j].FindControl("txtContent") as TextBox;
res.MessageContent = txtContent.Text;
dc.SaveChanges();
ui.Alert(this, "修改成功");
}
我在点击保存时候,txtContent.Text的值还是原来那个,因为repeater还是之前那个数据源,有没有什么方法能得到你在文本框中新输入的值,
这样获取到时空值
这样获取到时空值空值,你前台代码是怎么写的?
这样获取到时空值空值,你前台代码是怎么写的?
<asp:TextBox ID="txtContent" runat="server" TextMode="MultiLine" Width="605px" Height="220px"
CssClass="inputTxt"></asp:TextBox>就很简单,repeater中一个文本框,后台给他赋值
TextBox txtContent = (TextBox)(dl.FindControl("txtContent"));
txtContent.Text = item.MessageContent;
<ItemTemplate>
<asp:TextBox ID="txtContent" runat="server" TextMode="MultiLine" Width="605px" Height="220px"
CssClass="inputTxt"></asp:TextBox>
</ItemTemplate>
</asp:Repeater> protected void rp_01_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemIndex >= 0)
{
TextBox txtContent = (TextBox)e.Item.FindControl("txtContent");
txtContent.Text = e.Item.ItemIndex.ToString();
}
}
protected void Button1_Click1(object sender, EventArgs e)
{
for (int j = 0; j < rp_01.Controls.Count; j++)
{
TextBox txtContent = (TextBox)rp_01.Controls[j].FindControl("txtContent");
string txt = Request.Form[txtContent.UniqueID];
Response.Write("值" + j + "=" + txt + "<br/>");
}
Response.End();
}
我这里是可以取到值的啊
string txt = Request.Form[txtContent.UniqueID];这个联起来写?
CssClass="inputTxt"></asp:TextBox>
生成以后是textarea
如果我直接用input,我要怎么现在repeater中找到他?
CssClass="inputTxt"></asp:TextBox>
生成以后是textarea
如果我直接用input,我要怎么现在repeater中找到他?
for (int j = 0; j < rptPublish.Controls.Count; j++) {
TextBox txtContent = rptPublish.Controls[j].FindControl("txtContent") as TextBox;
string txt = Request.Form[txtContent.UniqueID];
Response.Write("控件:" + txtContent.UniqueID + "=" + txt + "<br/>");
}
Response.End()
这样看看出来的是什么?
for int i=0 i<rep1.items.count i++
textbox t=rep1.items[i].findcontrol("txtContent") as textbox;
resp.write(t.text);
手写的可能有错误,,一直这个模式 从来没有错误..
1.通过LinkButton的按钮事件;
2.通过<a></a>标签在page_load事件中通过参数
那你怎么提交和判断提交的?
TextBox txtContent = rptPublish.Controls[j].FindControl("txtContent") as TextBox;
提交的时候寻找这个控件,还是从原数据源的那个repeater中FindControl,他获取到的还是原来的数据,
我觉得现在是要给获取到的这个文本框重新赋值就就可以。问题就是,此刻你获取不到你新输入的值?
那你怎么提交和判断提交的?
TextBox txtContent = rptPublish.Controls[j].FindControl("txtContent") as TextBox;
提交的时候寻找这个控件,还是从原数据源的那个repeater中FindControl,他获取到的还是原来的数据,
我觉得现在是要给获取到的这个文本框重新赋值就就可以。问题就是,此刻你获取不到你新输入的值?当然是提交的时候找了,不提交是不会有Request.Form的,所以关键你的type是怎么来的,是Request.Form[]还是Request.QueryString[],这个很关键
那你怎么提交和判断提交的?
TextBox txtContent = rptPublish.Controls[j].FindControl("txtContent") as TextBox;
提交的时候寻找这个控件,还是从原数据源的那个repeater中FindControl,他获取到的还是原来的数据,
我觉得现在是要给获取到的这个文本框重新赋值就就可以。问题就是,此刻你获取不到你新输入的值?当然是提交的时候找了,不提交是不会有Request.Form的,所以关键你的type是怎么来的,是Request.Form[]还是Request.QueryString[],这个很关键
<a href="Edit.aspx?type=savezhu&MsgID=<%#Eval("MessageID") %>&MemID=<%#Eval("MemberID") %>">
save</a>
我用了LinkButton
protected void lblPublish_Click(object sender, EventArgs e)
{
//MessageID
MsgID = Convert.ToInt32(des.Decrypt(Request["MsgID"]));
var res = (from a in dc.VM_INT_Message
where a.MessageID == MsgID
select a).FirstOrDefault();
if (res != null)
{
////foreach (RepeaterItem dl in rptPublish.Items)
////{
for (int j = 0; j < rptPublish.Controls.Count; j++)
{
TextBox txtContent = rptPublish.Controls[j].FindControl("txtContent") as TextBox;
res.MessageContent = txtContent.Text;
//TextBox txtContent = (TextBox)(dl.FindControl("txtContent"));
//res.MessageContent = txtContent.Text;
dc.SaveChanges();
ui.Alert(this, "修改成功");
}
}
}
还是不行的
res.MessageContent = txtContent.Text;
改成
res.MessageContent=Request.Form[txtContent.UniqueID];
谢谢你的提醒,我弄出来了;
TextBox txtContent = rptPublish.Controls[j].FindControl("txtContent") as TextBox;
string txt = Request.Form[txtContent.UniqueID];
res.MessageContent = txt;
txtContent.Text = res.MessageContent;
dc.SaveChanges();
ui.Alert(this, "修改成功");
这样就可以了。