DataGrid里点一行(点行的任何地方),取出这行的数据~大家帮帮我 我想在DataGrid里点行的任何地方(不使用模板列和超链),就能取出这行的值~想了好久也解决不了,希望大家帮帮我呀~谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 private void dg_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e){ if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) { e.Item.Attributes.Add("onclick", "return SelectStr(\'" + e.Item.Cells[0].Text+ "\');");); }} 比如说我想把我点的这行的值放到一个TEXTBOX里,那e.Item.Attributes.Add("onclick", "return SelectStr(\'" + e.Item.Cells[0].Text+ "\');"););是不是就该改成e.Item.Attributes.Add("onclick", "TextBox1.Text=SelectStr(\'" + e.Item.Cells[0].Text+ "\');"););呀 e.Item.Attributes.Add("onclick", "document.all.textbox1.value="+e.Item.Cells[0].Text);这仅仅表示第一列的值放到textbox1里面,你说的取出这行的数据可能需要多次赋值吧 应该为:e.Item.Attributes.Add("onclick", "document.all("TextBox1").value=SelectStr(\'" + e.Item.Cells[0].Text+ "\');");); 单击行内任意处选中该行 DataGrid中提供的选择行的默认的方式是添加一个Select按钮(实际上,是一个LinkButton按钮),将其CommandName属性设为“Select”,当单击按钮时,DataGrid得到“Select”命令,并自动地在选中模式下显示该行。 并非所有的用户都会喜欢默认的“Select”按钮,问题是如何实现在某行的任意处单击而能选中该行。The solution is to perform a kind of sleight-of-hand in the grid.你可以象通常那样添加一个Select LinkButton,用户仍然可以使用它,也可以将它隐藏,然后在Page中加入客户端脚本将Select按钮的功能有效地复制到整个行。下面的例子说明了如何来实现。在GataGrid的ItemDataBound句柄中,首先要保证选中的行不能是header ,footer 或者Pager。然后得到Select按钮的一个引用。在这个例子中,假设是第一个单元格中的第一个控件。然后调用一个少有人知的方法——GetPostBackClientHyperLink,这个方法返回一个设计好的控件的PostBack调用的名称。换句话说,如果传递一个引用到一个LinkButton控件,这个方法将返回用于执行PostBack的客户端功能调用的名称。最后,将客户端方法指定给Item 本身,当DataGrid 生成时,它类似于一个HTML的Table。将方法指定给Item,等价于向表中的每一个行添加客户端代码。DataGrid的Item对象并不直接支持客户端代码到自身的方法,但是,我们可以通过它的Attributes集合来实现,这个集合传递通过浏览器指定给它的任何属性项。注意:这个技术的一个缺点在于,它在某种程度上增加了生成到浏览器的流,并且为每行的视图状态增加了信息量。private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e){ ListItemType itemType = e.Item.ItemType; if ((itemType == ListItemType.Pager) || (itemType == ListItemType.Header) || (itemType == ListItemType.Footer)) { return; } LinkButton button = (LinkButton)e.Item.Cells[0].Controls[0]; e.Item.Attributes["onclick"] = Page.GetPostBackClientHyperlink(button, "");} private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e){ if((e.Item.ItemType == ListItemType.Item)||(e.Item.ItemType == ListItemType.AlternatingItem)) { e.Item.Attributes.Add("onclick","document.getElementById('TextBox1').value = '" + e.Item.Cells[0].Text + "'"); }} 问题解决了,swordragon(古道热肠)在我的例子上可以实现,谢谢大家,这么帮助我,最后一个问题..............怎么给分,我不知道点哪里才能给你们分 DataGrid有这样一个事件 CurrentCellChanged是专门用来处理你说的问题 的 你看看下面的里子private void dataGrid1_CurrentCellChanged(object sender, System.EventArgs e) { this.textBox1.Text=this.dataGrid1[this.dataGrid1.CurrentCell.RowNumber,0].ToString().Trim(); this.textBox2.Text=this.dataGrid1[this.dataGrid1.CurrentCell.RowNumber,1].ToString().Trim(); } 如果我把TEXTBOX放在一个PANEL里,开始我把PANEL隐藏,当点一行我叫他显示,并把值提取到TEXTBOX里面,但是却不行,我感觉E.TIEM里的ONCLICK事件里在每次点击的时候只能触发一个事件,不能2个事件同时触发,是吗 e.Item.Attributes.Add("onclick","document.getElementById('Panel1').style.visibility = "visible";document.getElementById('TextBox1').value = '" + e.Item.Cells[0].Text + "'"); 刚才的拼错了,"应该改为',不好意思!!!e.Item.Attributes.Add("onclick","document.getElementById('Panel1').style.visibility = 'visible';document.getElementById('TextBox1').value = '" + e.Item.Cells[0].Text + "'");或者:(多加了一个判断,如果是隐藏的就显示)e.Item.Attributes.Add("onclick","var obj = document.getElementById('Panel1');if (obj.style.visibility == 'hidden'){obj.style.visibility = 'visible'};document.getElementById('TextBox1').value = '" + e.Item.Cells[0].Text + "'"); 求图形控件 开源 免费的 关于验证的问题!! DropDownList 如何做友情链接? 请教下TreeView控件的问题 水晶报表 弱问题 AspNetPager控件实现查询出错??? 使用DataGrid如何 让一个字段 分两列显示? .NET连接ACCESS数据库问题 关于ASP.net 页面类成员变量的生存期。 关于 语法错误 (操作符丢失) 这一类问题的解决方法,各位有什么好的意见 ASP.NET打包(关于treeview发布)急!在线等!!!
{
if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
e.Item.Attributes.Add("onclick", "return SelectStr(\'" + e.Item.Cells[0].Text+ "\');"););
}
}
这仅仅表示第一列的值放到textbox1里面,你说的取出这行的数据可能需要多次赋值吧
e.Item.Attributes.Add("onclick", "document.all("TextBox1").value=SelectStr(\'" + e.Item.Cells[0].Text+ "\');"););
{
if((e.Item.ItemType == ListItemType.Item)||(e.Item.ItemType == ListItemType.AlternatingItem))
{
e.Item.Attributes.Add("onclick","document.getElementById('TextBox1').value = '" + e.Item.Cells[0].Text + "'");
}
}
private void dataGrid1_CurrentCellChanged(object sender, System.EventArgs e)
{
this.textBox1.Text=this.dataGrid1[this.dataGrid1.CurrentCell.RowNumber,0].ToString().Trim();
this.textBox2.Text=this.dataGrid1[this.dataGrid1.CurrentCell.RowNumber,1].ToString().Trim();
}