在DataGrid里面的TextBox的onFocus事件里面用JavaScript处理。
在ItemDataBound中,加入:
if (e.Item.ItemType == ListItemType.Edit)
{
  TextBox txt1 = (TextBox)e.Item.FindControl("TextBox1");
  TextBox txt2 = (TextBox)e.Item.FindControl("TextBox2");
  TextBox txt3 = (TextBox)e.Item.FindControl("TextBox3");
  int i = int.Parse(txt1.Text) + int.Parse(txt2.Text);
  txt2.Attributes["onFocus"] = "javascript:this.value=" + i.ToString() + ";";
}

解决方案 »

  1.   

    No,No,不是这样的。
    应该是:
    if (e.Item.ItemType == ListItemType.Edit)
    {
      TextBox txt1 = (TextBox)e.Item.FindControl("TextBox1");
      txt1.Attributes["onFocus"] = "javascript:this.value=document.Form1.TextBox2.value+document.Form1.TextBox3.value";
    }
      

  2.   

    to(icyer)请问ListItemType.Edit是什么东西呢?
      

  3.   

    ListItemType是DataGrid/DataList的所有Item的类型集合,包括Header(表头)、Item(普通行)、Edit(编辑行)、分隔行、Footer(表末尾)、Pager(显示页数的行)。
      

  4.   

    DataGrid中编辑参见:
    ms-help://MS.VSCC/MS.MSDNVS.2052/Vbcon/html/vbtskAllowingUsersToEditItemsInDataGridWebControl.htmicyer的应该是e.Item.ItemType == ListItemType.EditItem 
    icyer的目的是在DataGrid绑定每一个DataGridItem时,判断是否是正要编辑的项。
    ListItemType是一个枚举类型,表示在DataGrid控件中的不同项,比如页眉、页脚、普通项、分隔符等等。
    如果绑定的当前项是要编辑的TextBox,则给此控件定义onFocus事件。
      

  5.   

    to(icyer,mbm)按你上面的写法我试过了,会出现错误。错误是:
    未将对象引用设置到对象的实例。我在itemdatabound事件中是这样写的:
    dim t as textbox
    t=e.item.findcontrol("txtboxno")
     t.Attributes["onFocus"] = "javascript:this.value=document.Form1.TextBox2.value+document.Form1.TextBox3.value";
    我用的是绑定列。将textbox放到绑定列上。这样用望随便单击列这可输数据
    列有十几列。都用绑定列.请上面两位高手帮帮忙。谢谢
      

  6.   

    item0:   TextBox1   TextBox2   TextBox3
    item1:   TextBox1   TextBox2   TextBox3
    item2:   TextBox1   TextBox2   TextBox3
    item3:   TextBox1   TextBox2   TextBox3  
    假设上面的控件是一个DataGrid,你把TextBox添加到了DataGrid的ItemTemplate里,绑定数据时显示出来的都是TextBox,用户可以直接更改而不需要点击任何按钮。
    比如item0行,输入了TextBox2的值后,焦点移到TextBox3,这时要把TextBox1的值和TextBox2的值相加,这样理解对吗???
      

  7.   

    If e.Item.ItemIndex >= 0 Then
      Dim t As TextBox
      t = CType(e.Item.FindControl("txtboxno")
      t.Attributes("onFocus") = "..."
    End If
      

  8.   

    不过直接写document.Form1.TextBox2可能不能找到元素。
    好像有个ClientID可以帮忙找到TextBox的最后的生成ID。
      

  9.   

    不过好像不能直接用document.Form1.TextBox2这样的ID,在最后生成的TextBox中,你可以看见他们的ID都是类似"ctl_..."这种字符串,或许控件的ClientID可以帮个忙。
      

  10.   

    这个好像不能实现吧!!至少我不会
    你是没办法定位客户端控件的ID,即使它们的ID号有一定的规律。
      

  11.   

    to(icyer)请教一个问题,就是把一页作为对话框出现,结果,在对话中的
    datagrid中的选择按钮,将他按下就出现另一个错误提示信息,javascript:__doPostBack('DtGrid:_ctl5:_ctl0','')这是怎么一回事呀
      

  12.   


    icyer,mvm 上面你的那条语句会错误,出错的提示是:
     t.Attributes("onFocus") = "..."这条语句对象为空或不是对象,
    请问怎么办呢?我好急呀。两位高手,帮帮我。
      

  13.   

    (icyer,mbm)   t.Attributes("onFocus") = "..."这条语名运行时出错出错提示是:对象为空或不是对象。我试过了在aspx文件里我用javascript写了一条语句:
    <javascript>
    document.write(document.Form1.elements(1).id;
    </javascript>
    也是这种错误。好像根本找不到form1示的。请问两位,高手,我该怎么办呢?
    我很急呀。两位帮帮我。多谢