当我执行查询按钮后,如果我的datagrid中有两条以上的信息,为什么我的鼠标指向它的时候,始终是鼠标指向第二行开始才改变背景色,指向第一行没有反应,并且我双击时为什么没有反应,弹不出来新页面??恳请大虾帮忙解决,谢谢!~
private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if (e.Item.ItemType==ListItemType.Item || e.Item.ItemType==ListItemType.EditItem || e.Item.ItemType==ListItemType.SelectedItem || e.Item.ItemType==ListItemType.AlternatingItem)
{
string a1 = "";
for(int i=0;i<this.DataGrid1.Items.Count;i++)
{
a1 = this.DataGrid1.Items[i].Cells[0].Text;
//改变鼠标所到行的背景色
e.Item.Attributes.Add("onmouseover","currentcolor=this.style.backgroundColor;this.style.backgroundColor='E9ECF2'");
e.Item.Attributes.Add("onmouseout","this.style.backgroundColor=currentcolor");
e.Item.Attributes["ondblclick"] = "navigate('addworker.aspx'?a1=" + a1 + "','','')";
}
}
}
private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if (e.Item.ItemType==ListItemType.Item || e.Item.ItemType==ListItemType.EditItem || e.Item.ItemType==ListItemType.SelectedItem || e.Item.ItemType==ListItemType.AlternatingItem)
{
string a1 = "";
for(int i=0;i<this.DataGrid1.Items.Count;i++)
{
a1 = this.DataGrid1.Items[i].Cells[0].Text;
//改变鼠标所到行的背景色
e.Item.Attributes.Add("onmouseover","currentcolor=this.style.backgroundColor;this.style.backgroundColor='E9ECF2'");
e.Item.Attributes.Add("onmouseout","this.style.backgroundColor=currentcolor");
e.Item.Attributes["ondblclick"] = "navigate('addworker.aspx'?a1=" + a1 + "','','')";
}
}
}
解决方案 »
- 上传excel文件记录到数据库
- 如何制作带下拉列表框的搜索页面
- asp.net项目中,Global.asax文件起什么作用???
- Repeater格式显示的问题,进来抢分了!
- Hepelink没有onclick事件那是靠什么激活控件?
- 从“HTML”视图切换到“设计”视图,总提示这样的错误?
- <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>s
- ' < > " % & \ 如何判断text输入是否包含这几个字符
- 在DataGrid里的Edit列,点一下,怎么控制出来的TextBOX的长度
- 请天津的朋友帮忙!保留两天,肯定结帖
- $$$两个datatable结构相同,如何做集合并运算和差运算,多谢
- 是高手就帮我解决一下,为什么在我新页面中获取的session值始终是父页面datagrid的最后一条信息的cell值啊??
这个加载的位置错了。
应该在页面加载的时候就把这个加载出来。
你这样写,是满足条件后才e.Item.Attributes
这样的话你就得点两次才出现你的效果!
不知道能明白么?
e.Item.Attributes.Add("onmouseout","this.style.backgroundColor=currentcolor");
e.Item.Attributes["ondblclick"] = "navigate('addworker.aspx'?a1=" + a1 + "','','')";
这三句是动态增加的事件。
他的原理是在他所在的过程运行的时候动态的生成html代码。
按照你的写法。就要执行一次你上面的过程,才会出现你的代码,所以出现你的问题。单独写个过程
Sub myDataGrid_ItemCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs)
//这加入你要的e.Item.Attributes事件!
End Sub
这个过程在DataGrid的ItemCreated时间时执行!
string a1 = "";
for(int i=0;i<this.DataGrid1.Items.Count;i++)
{
a1 = this.DataGrid1.Items[i].Cells[1].Text;
Session["ygid"]=a1;
}
我把datagrid值中的关键字传值给a1,然后在新页面用session接收,用它去数据库中查找相应的所有字段,再邦定到相应的textbox中,但不知道为什么总是当前datagrid中所有行减一的那一行的值,谢谢你的指教!~
{
a1 = this.DataGrid1.Items[i].Cells[1].Text;
Session["ygid"]=a1;
}这个语句,每次循环,把第i行的值赋给Session["ygid"],循环完了,最后Session["ygid"] 就是所有行数减一的那一行的值啊
用select 或者 edit 什么的阿
另外楼主,可否跟我联系,给我讲一下你的代码,我同时急需。
加我QQ64795629
//循环对表格行做脚本,点击弹出新窗口
int i=0;
int mycount = DataGrid1.Items.Count;
string ygid = "";
for(i=0;i<mycount;i++)
{
ygid = DataGrid1.DataKeys[i].ToString();
DataGrid1.Items[i].Attributes.Add("onclick","window.open('updatawage.aspx?ygid=" + ygid + "','','');");
}