请教Gridview鼠标双击传主键值问题

lovexyz123 2009-04-21 06:12:14

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowIndex == -1) return;
string FreightId = ds.Tables["FreightExports"].Rows[e.Row.RowIndex][0].ToString();
//Session["FreightId"] = GridView1.DataKeys[e.Row.RowIndex].Value;//和上面代码效果一样
Session["FreightId"]=FreightId ;
if (e.Row.RowType == DataControlRowType.DataRow) //判断是否是DataRow,以防止鼠标经过Header也有效果
{
e.Row.Attributes.Add("onDblClick", "javascript:top.location.href='/FrmHYCK_Edit.aspx?FreightId=" + FreightId + "'");
e.Row.Attributes.Add("style", "cursor:hand");
e.Row.Attributes.Add("onmouseover", "e=this.style.backgroundColor; this.style.backgroundColor='#A095C4'");
e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=e");

e.Row.Cells[1].Attributes.Add("class", "text");

}

}

现在双击能跳转到FrmHYCK_Edit.aspx,但是每次传的值都传的Gridview最下面一行的主键值,我想实现的是,鼠标点击一行,跳转到下一个界面,所传的值是鼠标双击行的主键值。
...全文
446 36 打赏 收藏 转发到动态 举报
写回复
用AI写文章
36 条回复
切换为时间正序
请发表友善的回复…
发表回复
ericawangrong 2009-04-22
  • 打赏
  • 举报
回复
你别保存在Session中啊,保存在Session中每次都重复赋值,最后从Session中取的话肯定不对,你直接写
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow) //判断是否是DataRow,以防止鼠标经过Header也有效果
{
DataRowView row = e.Row.DataItem as DataRowView;
string FreightId = row[0].ToString();
e.Row.Attributes.Add("onDblClick", "javascript:top.location.href='/FrmHYCK_Edit.aspx?FreightId=" + FreightId + "'");
e.Row.Attributes.Add("style", "cursor:hand");
e.Row.Attributes.Add("onmouseover", "e=this.style.backgroundColor; this.style.backgroundColor='#A095C4'");
e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=e");

e.Row.Cells[1].Attributes.Add("class", "text");

}

}
lovexyz123 2009-04-22
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 ericawangrong 的回复:]
直接用e.Row.DataItem就可以获取当前行的对象,
如果给gridview的数据源为List <T>,
则 T t = e.Row.DataItem as T;
然后t.属性就可以获得相关的值了,
如果给gridview的数据源为DataSet或者是DataTable,则
DataRowView row = e.Row.DataItem as DataRowView;
row["字段名"]就可以取到值了
[/Quote]
用DataItem和DataItemIndex效果一样,每次传的值都传的Gridview最下面一行的主键值,我想实现的是,鼠标点击一行,跳转到下一个界面,所传的值是鼠标双击行的主键值。
lovexyz123 2009-04-22
  • 打赏
  • 举报
回复
我是用的框架做的,传到框架没往下级页面传。
阿非 2009-04-22
  • 打赏
  • 举报
回复
是哪里的问题呢
lovexyz123 2009-04-22
  • 打赏
  • 举报
回复
因为太粗心了。
lovexyz123 2009-04-22
  • 打赏
  • 举报
回复
问题已解决,谢谢楼上各位,结贴!
lovexyz123 2009-04-22
  • 打赏
  • 举报
回复
先谢谢各位,我先试试。
阿非 2009-04-22
  • 打赏
  • 举报
回复
哪你重新建个 然后把代码COPY 过去吧,有可能是某个地方关联了
ChengKing 2009-04-22
  • 打赏
  • 举报
回复
当前DataTable中某行的键:

int index = e.CurrentPage * e.PageSize + e.RowIndex;
string key = ds.Tables[0].Rows[index]["id"].ToString();
lovexyz123 2009-04-22
  • 打赏
  • 举报
回复
我把代码复制到其他项目,就好用了,不知道什么问题。
llsen 2009-04-22
  • 打赏
  • 举报
回复
用模式窗口,子画面
#region 添加点击事件

/// <summary>
/// 添加点击事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
try
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
string aa = "window.returnValue = \"" + e.Row.Cells[0].Text + "\";window.close();";
e.Row.Attributes.Add("ondblclick", aa);
}
}
catch (Exception ex)
{
this.ShowMessage(ex.Message);
}
}

#endregion


父画面
<script type="text/javascript" language="javascript">    
function showwindow()
{
var returnValue = window.showModalDialog("DItemList.aspx",
'window','dialogWidth=650px;dialogHeight=420px;status=no');

document.getElementById ("txtItem_id").value = returnValue == null?document.getElementById ("txtItem_id").value:returnValue;
}
</script>
阿非 2009-04-22
  • 打赏
  • 举报
回复
图片看不到
lovexyz123 2009-04-22
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 Sandy945 的回复:]
我一直没给你发消息,应该是CSDN 出问题了
[/Quote]
哦,我这边一直提示有未读消息,但是点击有看不到消息
lovexyz123 2009-04-22
  • 打赏
  • 举报
回复
没有写错页,这个问题已经搞了我两天了
阿非 2009-04-22
  • 打赏
  • 举报
回复
我一直没给你发消息,应该是CSDN 出问题了
阿非 2009-04-22
  • 打赏
  • 举报
回复
正常情况 应该是没问题的~ 你先确认一下 是不是写错页了
lovexyz123 2009-04-22
  • 打赏
  • 举报
回复
对,能得到值
阿非 2009-04-22
  • 打赏
  • 举报
回复
地址栏 中还有Fid 是么
lovexyz123 2009-04-22
  • 打赏
  • 举报
回复
对,s=""
加载更多回复(15)

62,267

社区成员

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

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

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

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