设置了textbox.text的值,但显示时却不是该值,是另一个按钮控件的text值,而且还有点乱,无规律显示。
补充:1、使用了ajaxpro2.0 ,如果把textbox改成label,显示一切正常。               
     2、仅仅列表时显示一切正常。
因涉及多个文件,仅列部分代码如下:
     if (Convert.ToInt16(ds.Tables[0].Rows[ii][0]) == editline && jj >0) //判断是否需要修改的行\非第0列,第0列为id主键不可改变
                    {
                       
                        Text_B[jj, ii] = new TextBox();
                       
                     
                        if (chr[jj].IndexOf("n") > -1) // //数字类型
                        {                            Text_B[jj, ii].Text = Convert.ToDecimal(ds.Tables[0].Rows[ii][jj]).ToString("N");                            Text_B[jj, ii].Attributes.Add("align", "right");
                        }
                        else   //字符类型
                        {                            
                            Text_B[jj, ii].Text =   ds.Tables[0].Rows[ii][jj].ToString();
                            
                            Text_B[jj, ii].Attributes.Add("align", "left");
                                
                        }
                        Text_B[jj, ii].Width = wchr[jj] * 18;
                        Td[jj, ii].Controls.Add(Text_B[jj, ii]);
显示出来的html源码:
<tr>
<td align="left" class="style10">3150</td><td class="style11"><input name="ctl12" type="text" value="修改"(错误的) align="left" style="width:72px;" /></td><td class="style11"><input name="ctl13" type="text" value="(正确的) " align="left" style="width:90px;" /......使用调试读出textbox.text值是正确的,但显示在页面的总有一二个是错误的,且不一定全错。textbox.text  显示异常textboxclassinputhtml

解决方案 »

  1.   

    if (Convert.ToInt16(ds.Tables[0].Rows[ii][0]) == editline && jj >0) 你这里判断的是ds.Tables[0].Rows[ii][0]
    ,但你下方操作的却是
    Text_B[jj, ii] = new TextBox();ds.Tables[0].Rows[ii][jj]不是很理解???
      

  2.   

    循环设置 textbox 为何不用repeater?
      

  3.   

    虽然仍不得其解。但问题已解决。
    应该是ajaxpro的问题,之前加了个 window.location.reload(); 然后再调用后台代码。OK了,只是ajax的作用打了折扣。
      

  4.   


    把赋值代码写用if(!ispostback)包起来,否则就会出现这个情况。
    可以不用"window.location.reload();"
    ajax框架或多或少都有点不可思议的地方。
      

  5.   

    asp.net程序员的悲剧也许就在这个地方。无法学会ajax,总是习惯于使用asp.net来刷新页面。
      

  6.   

    if(!ispostback)使用这个只刷新一次。可以保持你的页面数据
      

  7.   

    如果使用if(!ispostback) + ajaxpro有用,早就解决了。
    怪问题是逻辑没有问题,原页面控件的属性(比如变量值)被ajaxpro带到新的页面,而不理会新页面已经对控件重新赋值。
    仍然悲催,问题并没有解决,调试运行好好的,昨天又错乱了。
      

  8.   

    认识到问题了,提醒各位:ajaxpro最佳搭档是html,而不是asp.net里面的对象、控件,因为最终的页面上展示的还是html。下列段改掉:
                            Text_B[jj, ii] = new TextBox();
                         if (chr[jj].IndexOf("n") > -1) // //数字类型
                             {
     
                                Text_B[jj, ii].Text = Convert.ToDecimal(ds.Tables[0].Rows[ii][jj]).ToString("N");
     
                                Text_B[jj, ii].Attributes.Add("align", "right");
                             }
    直接改为:
       Text_B[jj, ii].Text =""<input name=Text_B" + jj.ToString() +" id=Text_B" + jj.ToString() + " type=text value='" + ds.Tables[0].Rows[ii][jj].ToString() +"'"  + " style=width:" + wchr[jj] * 18 + "px; />";
                        
      

  9.   

    学webform就要不停的IfPostBack,IfPostBack,IfPostBack,IfPostBack感觉ajax+ashx+html用起来相当的爽快。