VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1582|回复: 19

单击时把DataGrid中的某列的值通过Session传出去的问题

[复制链接]

3

主题

26

帖子

13.00

积分

新手上路

Rank: 1

积分
13.00
发表于 2020-10-17 12:00:02 | 显示全部楼层 |阅读模式
我用下面的方法在用户单击DataGrid的时候打开一个新页:
private void DataGrid1_ItemDataBound_1(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
        e.Item.Attributes.Add ("onclick","window.open('yl.aspx?ID="+e.Item.Cells [0].Text +"')");
}
现在我不希望通过url来传值了,我想通过Session来完成:
private void DataGrid1_ItemDataBound_1(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
        e.Item.Attributes.Add ("onclick","window.open('yl.aspx?')");
        Session["LoginName"]=e.Item.Cells [0].Text;
}
可是我在另一页接收的时候,发现Session["LoginName"]是一个空格符&nbsp,请问这是怎么回事?
回复

使用道具 举报

0

主题

32

帖子

20.00

积分

新手上路

Rank: 1

积分
20.00
发表于 2020-10-17 12:15:01 | 显示全部楼层
由于邦定时,每行的数据不同,因此,要区分不同的行,需要找到一个关键字。

private void DataGrid1_ItemDataBound_1(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
//伪代码
Session["key"+数据的键值,如id作为Session的key] =  e.Item.Cells[0].Text;
e.Item.Attributes.Add ("onclick","window.open('yl.aspx?ID="+ 数据的键值,如id作为Session的key +  "')");
}

此外,在获取Session时,需要传递这个关键字才能取到正确的数据,而不至于混淆。

回复

使用道具 举报

3

主题

26

帖子

13.00

积分

新手上路

Rank: 1

积分
13.00
 楼主| 发表于 2020-10-17 13:15:01 | 显示全部楼层
数据的键值就是e.Item.Cells[0].Text啊,但是现在e.Item.Cells[0].Text的值传过去不正常,变成了&nbsp啊,怎么解决呢?
回复

使用道具 举报

0

主题

9

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
发表于 2020-10-17 16:30:01 | 显示全部楼层
用单击事件试一下
回复

使用道具 举报

3

主题

26

帖子

13.00

积分

新手上路

Rank: 1

积分
13.00
 楼主| 发表于 2020-10-17 16:45:01 | 显示全部楼层
谢楼上帮顶,与什么事件没有关系吧?
回复

使用道具 举报

0

主题

32

帖子

20.00

积分

新手上路

Rank: 1

积分
20.00
发表于 2020-10-17 17:00:01 | 显示全部楼层
现在e.Item.Cells[0].Text的值传过去不正常,变成了&nbsp啊,怎么解决呢?
你先打印出来存之前有没有值的,
private void DataGrid1_ItemDataBound_1(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
Response.Write ("<li>"+  e.Item.Cells[0].Text);

}
回复

使用道具 举报

3

主题

26

帖子

13.00

积分

新手上路

Rank: 1

积分
13.00
 楼主| 发表于 2020-10-17 17:30:01 | 显示全部楼层
Session["LoginName"]=e.Item.Cells [0].Text;这句话在窗体加载的时候是有值的,等到了鼠标单击的时候就没有值了,是null,然后在下一页取的时候就变成了&nbsp

孟老大,帮我解决解决吧,谢谢了
回复

使用道具 举报

1

主题

18

帖子

15.00

积分

新手上路

Rank: 1

积分
15.00
发表于 2020-10-17 18:00:01 | 显示全部楼层
debug.
回复

使用道具 举报

0

主题

9

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
发表于 2020-10-17 19:00:01 | 显示全部楼层
建议楼主把e的范围确定一下
判断一下当前e对象是属于交替项,还是编辑项,还是项
回复

使用道具 举报

0

主题

15

帖子

9.00

积分

新手上路

Rank: 1

积分
9.00
发表于 2020-10-17 19:15:01 | 显示全部楼层
我用下面的方法在用户单击DataGrid的时候打开一个新页:
private void DataGrid1_ItemDataBound_1(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
e.Item.Attributes.Add ("onclick","window.open('yl.aspx?ID="+e.Item.Cells [0].Text +"')");
}
现在我不希望通过url来传值了,我想通过Session来完成:
private void DataGrid1_ItemDataBound_1(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
e.Item.Attributes.Add ("onclick","window.open('yl.aspx?')");
Session["LoginName"]=e.Item.Cells [0].Text;
}
可是我在另一页接收的时候,发现Session["LoginName"]是一个空格符 ,请问这是怎么回事?

=========================================================

把Session["LoginName"]=e.Item.Cells [0].Text; 这行代码从ItemDataBound事件中拿出来
放到 command 事件中  

没用过datagrid 就用过gridview 见笑了  

绑定数据的时候循环执行  那样在循环给session["LoginName"]赋值  当然不是你需要的  防到 command 事件中  在点击后 把当前行的 loginName 的值再赋给session
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表