我要在DataGrid中实现一个下拉列表改变另一个TextBox 的值,要求用javascript实现,因为不想页面刷新。下拉列表用的是html组件,TextBox是后台控件,现在不知道如何取得DataGrid中的TextBox。
如果不在DataGrid中,可以这样取:Document.getElementById("TextBox1").innerText
但是在DataGrid中的TextBox这样写法出错。有高人指点吗?

解决方案 »

  1.   

    在DataGrid中的下拉列表的onchange时间中:
    e是System.Web.UI.WebControls.DataGridCommandEventArgs e.Item.cell[0]  获取当前行第一个单元格
    e.Item.cell[0].Text   就是当前单元格的内容你试试e.Item.cell[0].TextBox1.Text;
      

  2.   

    function ddl_onchange(obj,textid)
    {
       document.getElementById(textid).value=obj.options(obj.selectedindex).value;
    }
    <asp:dropdownlist id="ddl" runat="server" onchange="ddl_onchange(this,textid);"></asp:dropdownlist>其中,textid是textbox的ClientID,这个你要在绑定的时候想办法得到
      

  3.   

    to criedshy :怎么得到textbox的ID啊,我就是这个不太明白。
      

  4.   

    加个特殊的class
    input=document.getelementbytagname("input")
    foreach (textbox in input)
    {
        if(textbox.className="")
        {
             ......
        }
    }
      

  5.   

    这是我现在用的代码:
    <asp:TemplateColumn HeaderImageUrl="hetonghao.gif" SortExpression="合同号" HeaderText="合同号">
    <ItemTemplate>
    <asp:Label id=Label8 runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.合同号") %>'>
    </asp:Label>
    </ItemTemplate>
    <EditItemTemplate>
    <asp:TextBox id="hthao" runat="server" Width="60px" Text='<%# DataBinder.Eval(Container, "DataItem.合同号") %>'>
    </asp:TextBox>
    <SELECT id="ht" style="WIDTH: 70px; HEIGHT: 22px" onclick="SelHetong()">
    <OPTION selected></OPTION>

    </SELECT>
    </EditItemTemplate>
    </asp:TemplateColumn>
    select组件我是在js中加载列表,现在不知道怎么写SelHetong()
    看了网上一些介绍,试着这样:
    <script>
    function SelHetong()
    {var txtgd = null;
      var txtID='<%=DataGrid1.ClientID%>';
      txtgd=document.getElementById(txtID); 
    txtgd.Items[txtgd.EditItemIndex].FindControl("hthao").Text="kkk";
    }
    </script>
    提示Items为空或不是对象。
      

  6.   

            If e.Item.ItemType = ListItemType.AlternatingItem Or e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.Footer Then
                For I = 0 To Tb.Columns.Count - 1
                    Obj = e.Item.Cells(I).Controls(1)
                    Select Case Tb.Columns(I).ColumnName
                        Case "PART_NO"
                            If Status <> 0 Then '新增或修改模式
                                Obj.ReadOnly = False                            Js = "if(event.keyCode==13) "
                                Js += "{var desc=" + e.Item.Cells(I).Controls(1).ClientID + ".value;"
                                Js += "var nDialogWidth=700;var nDialogHeight=400;"
                                Js += "var nLeft=(window.screen.availWidth-nDialogWidth)/2;"
                                Js += "var nTop=(window.screen.availHeight-nDialogHeight)/2;"
                                Js += "var sFeatures='dialogLeft:'+nLeft+'px;dialogTop:'+nTop+'px;dialogHeight:'+nDialogHeight+'px;"
                                Js += "dialogWidth: '+nDialogWidth+'px;help:no;status:no';"
                                Js += "var bLogged=window.showModalDialog('Dialog_Item.aspx?type=0&desc='+escape(desc),window,sFeatures);"
                                Js += "if(bLogged != null) "
                                Js += "{" + e.Item.Cells(1).Controls(1).ClientID + ".value=bLogged[0];" 'UPC
                                Js += e.Item.Cells(I).Controls(1).ClientID + ".value=bLogged[2];" 'PART_NO
                                Js += e.Item.Cells(3).Controls(1).ClientID + ".value=bLogged[1];" 'BRAND
                                Js += e.Item.Cells(4).Controls(1).ClientID + ".value=bLogged[3];" 'DESCRIPTION
                                Js += e.Item.Cells(5).Controls(1).ClientID + ".value=bLogged[5];" '单位
                                Js += e.Item.Cells(6).Controls(1).ClientID + ".value=bLogged[8];" 'BATCH_NO
                                Js += e.Item.Cells(11).Controls(1).ClientID + ".value=bLogged[9];" 'COST
                                Js += e.Item.Cells(7).Controls(1).ClientID + ".focus();" + e.Item.Cells(7).Controls(1).ClientID + ".select()}}"
                                Obj.Attributes.Add("onkeydown", Js)
     end if很多年前用vb.net写的
    放在datagrid的绑定事件中
      

  7.   

    >怎么得到textbox的ID啊,我就是这个不太明白。
     
    用<%=textbox1.ClientID %>eg:
    <asp:Textbox id="txt1" runat="server"/>
    <script>
    alert(document.getElementById('<%=txt1.ClientID %>').value);
    </script> 
      

  8.   

    Textbox是在点编辑时候出现的,因此用<%=textbox1.ClientID%>不行,编译出错.
      

  9.   

    TextBox是放在DataGrid的编辑模板里,点击"编辑"才出现,因此用 <%=textbox1.ClientID   % >不行.
      

  10.   

      function judgeCash()
      {
        var check = tableCashList.getElementsByTagName("input")
        var cashMoney = "";
        for(var i=1;i<check.length;i++)
        {
            if(check[i].type=="checkbox")
            {
                if(check[i].checked==true)
                {
                    bool = true;            }
                else
                {
                    bool = false;
                }
            }
            if(bool==true)
            {
                if(check[i].type.toLowerCase()=="text")
                {    
                    if (check[i].value!="0.0")
                    {
                        cashMoney += check[i].value+",";    
                    }
                }       
            }
        }
    cashMoney 就是所有textbox值    
        }
      

  11.   

    已解决,在DataGrid的绑定事件中记录TextBox的ClientID,再在js中用<%=ClientID%>引用TextBox