当前位置: 代码迷 >> ASP.NET >> 怎么用JS 获取 DataList 中 textbox 的值
  详细解决方案

怎么用JS 获取 DataList 中 textbox 的值

热度:10426   发布时间:2013-02-25 00:00:00.0
如何用JS 获取 DataList 中 textbox 的值
在网上搜过很多,看了,试了都没管用。所以问一下各位前辈,希望不要BS我的问题太浅薄。


datalist中有

一张图片
一个HiddenField 叫 imgid
一个textbox 叫name
一个textbox 叫 message
一个按钮 button

绑定datalist后,有N个以上表格显示出来

当我点击 其中一个button的时候 如何用JS获取相对应的imgid,name,message这3个的值。





自己试过的

方法一:

aspx
给datalist 加上 OnItemDataBound="DataList1_ItemDataBound"

cs

Button rButton = (Button)e.Item.FindControl("Button1");//提交按钮
TextBox rname = (TextBox)e.Item.FindControl("name");
TextBox rmessage = (TextBox)e.Item.FindControl("message");
string rimage = ((HiddenField)e.Item.FindControl("imgid")).Text;

rButton.OnClientClick = "aa('" + rimage + "','" + rname + "','" + rmessage + "')";

JS

fuction aa(a,b,c)
{
  alert(a);
  alert(b);
  alert(c);
}


弹出来的均是最初绑定时候的值,例如页面加载后,是空的,我自己写上name,message再点button,弹出来的依然是空。


方法二:

aspx

button这样写
<input id="Button1" type="button" value="发表" onclick='<%# "aa(" +((DataListItem)Container).FindControl("name").ClientID +","+((DataListItem)Container).FindControl("message").ClientID+","+((DataListItem)Container).FindControl("imgid").ClientID+")"%> ' />

JS

fuction aa(a,b,c)
{
  alert(a.id);
  alert(document.getElementById(a.id).value); 
  alert(document.getElementById(b.id).value);
  alert(document.getElementById(c.id).value);
}

这样alert(a.id);弹出来的是相对应的类似这个格式(DataList1_ctl04_name )的值
alert(document.getElementById(a.id).value); 这样弹出的是name的值。但是结果同上,弹出来的均是最初绑定时候的值,例如页面加载后,是空的,我自己写上name,message再点button,弹出来的依然是空





------解决方案--------------------------------------------------------
HTML code
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="DataList.aspx.cs" Inherits="DataList" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" ><head runat="server">    <title>无标题页</title>    <script>    function show(obj)    {        var el=obj.parentNode.getElementsByTagName('input');        for(var i=0;i<el.length;i++)        {            if(el[i].type=='text')            {                if(el[i].id.indexOf('txtID')!=-1)                    alert('当前行的ID是'+el[i].value);                else if(el[i].id.indexOf('txtName')!=-1)                    alert('当前行的Name是'+el[i].value);            }            else if(el[i].type=='hidden')                alert('当前行是第'+(parseInt(el[i].value)+1)+'行');        }            }    </script></head><body>    <form id="form1" runat="server">    <div>        <asp:DataList ID="dl" runat="server">    <ItemTemplate>    <asp:HiddenField ID="hid" Value='<%#Container.ItemIndex %>' runat="server" />        ID:<asp:TextBox ID="txtID" runat="server" Text='<%#Eval("ID") %>'></asp:TextBox>    Name:<asp:TextBox ID="txtName" runat="server" Text='<%#Eval("Name") %>'></asp:TextBox>    <asp:Button runat="server" OnClientClick="show(this);return false;" Text="显示" />    </ItemTemplate>    </asp:DataList>    </div>    </form></body></html>
  相关解决方案