如何用JS 获取 DataList 中 textbox 的值

jasmine5288 2009-03-12 02:29:33
在网上搜过很多,看了,试了都没管用。所以问一下各位前辈,希望不要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,弹出来的依然是空




...全文
518 25 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
yumistage 2012-05-04
  • 打赏
  • 举报
回复
遇到了楼主同样的问题 看了解决方法 只能找到控件的ID 但是不能找到控件的值 在线求高人知道
xyshiliang 2011-05-25
  • 打赏
  • 举报
回复
我也是差不多的问题 折腾了好久还没解决的办法
Carekee 2010-03-17
  • 打赏
  • 举报
回复
mark
limpid_123 2009-03-17
  • 打赏
  • 举报
回复
mark
jasmine5288 2009-03-13
  • 打赏
  • 举报
回复
.
jasmine5288 2009-03-13
  • 打赏
  • 举报
回复
.
yangniao 2009-03-13
  • 打赏
  • 举报
回复
。。。。。。。。。
jasmine5288 2009-03-13
  • 打赏
  • 举报
回复
上面的问题 通过Sandy945的方法解决了。非常感谢。


我还想问个问题


绑定datalist后,有N个以上table显示出来,table我是这样写的<table width="100%" id="tab<%#Eval("Image_ID")%>">

点击button 后,获取到相对应的imgid,name,message这3个的值,并成功的写入到数据库
然后从CS文件返回datatable给js


代码如下:
function get_Result_CallBack(response)
{
if (response.value != null)
{
z = 0;
var ds = response.value;
if(ds != null && typeof(ds) == "object" && ds.Rows != null)
{
var arrCellText=new Array();
arrCellText[0] = ds.Rows[0].Message ;
arrCellText[1] = ds.Rows[0].Name;
arrCellText[2] = "回复";
arrCellText[3] = "删除";
_tab = document.getElementById("tab"+ds.Rows[0].Img_ID);
createRowCell(_tab,arrCellText);
}

}
return
}

function createRowCell(tab,arrCellText)
{
var trNew = tab.insertRow(0);
for(var i=0; i<arrCellText.length; i++)
{
alert(arrCellText[i]);//这里是可以弹出来每个字段的值
var tdNew = trNew.insertCell() ;
var tnNew = document.createTextNode(arrCellText[i]) ;
tdNew.appendChild(tnNew) ;
}
}


但是我的相应的table没有任何反应,也没有报JS错误,页面无刷新。

是不是他找不到相应的table

还是我代码有问题



阿非 2009-03-13
  • 打赏
  • 举报
回复

function createRowCell(tab,arrCellText)
{
var trNew = tab.insertRow(0);
for(var i=0; i <arrCellText.length; i++)
{

var tdNew = trNew.insertCell(i) ;
tdNew.innerText= arrCellText[i] ;

}
}



只要保证 _tab 能被找到,并且是相对应的 ,哪就没问题
jasmine5288 2009-03-13
  • 打赏
  • 举报
回复
alert(ds.Rows[0].Img_ID);

弹出的是 当前图片的 ID
limpid_123 2009-03-13
  • 打赏
  • 举报
回复
mark
阿非 2009-03-13
  • 打赏
  • 举报
回复
_tab = document.getElementById("tab"+ds.Rows[0].Img_ID);
在这句前面
alert(ds.Rows[0].Img_ID);
jasmine5288 2009-03-13
  • 打赏
  • 举报
回复
生成的 table 的 id 是tab1,tab2,tab3,tab4,tab5......这样的。
jasmine5288 2009-03-13
  • 打赏
  • 举报
回复
生成的 table 的 id 是tab1,tab2,tab3,tab4,tab5......这样的。
阿非 2009-03-13
  • 打赏
  • 举报
回复
生成的table 的 id 你看了 么
jasmine5288 2009-03-13
  • 打赏
  • 举报
回复
就是上面我在8楼写的那样

相应的table并没有添加行

阿非 2009-03-13
  • 打赏
  • 举报
回复
现在是什么问题?
haibozhou1 2009-03-12
  • 打赏
  • 举报
回复
記住一點客戶端控件要邊成服務端控件,服務端控件就不要邊,是定義ID而不是NAME
阿非 2009-03-12
  • 打赏
  • 举报
回复

<%@ 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>



using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class DataList : System.Web.UI.Page
{
protected DataTable getDataTable()
{

System.Data.DataTable dt = new System.Data.DataTable();
System.Data.DataRow dr;
dt.Columns.Add(new System.Data.DataColumn("ID", typeof(System.Int32)));
dt.Columns.Add(new System.Data.DataColumn("Name", typeof(System.String)));
dr = dt.NewRow();
dr[0] = 1;
dr[1] = "小明";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = 2;
dr[1] = "小强";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = 3;
dr[1] = "小张";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = 4;
dr[1] = "小李";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = 5;
dr[1] = "小关";
dt.Rows.Add(dr);
return dt;
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
dl.DataSource = getDataTable().DefaultView;
dl.DataBind();
}
}
}

jasmine5288 2009-03-12
  • 打赏
  • 举报
回复
好我试下
加载更多回复(4)

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧