如何用双击DataGrid某一行,根据这一行的id打开新的窗口显示详细内容。

wljie 2007-05-09 10:03:22
如何用Javascrip做出这样的效果:双击DataGrid某一行,根据这一行的id打开新的窗口显示详细内容。源代码如下,请问如何在Javascrip处修改?

<asp:datagrid id="DataGrid1" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:BoundColumn DataField="UserID" SortExpression="UserID"></asp:BoundColumn>
<asp:BoundColumn DataField="UserName" SortExpression="UserName"></asp:BoundColumn>
</Columns> </asp:datagrid>
------------------------------------------------------------------------
<script language="javascript">
function Tosubmit()
{
window.location.href = "Default.aspx?userid="+<%# Bind("UserID") %>;
}
</script>
------------------------------------------------------------------------
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.AlternatingItem))
{
e.Item.Attributes.Add("ondblclick", "javascript:Tosubmit();");
}
}
...全文
325 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
waddan 2007-05-11
  • 打赏
  • 举报
回复
在Form1窗体中
private void dataGrid1_doubleclick(......)
{
Form 2 form2=new Form2(this.dataGrid1[dataGrid1.curentRowInde,0].ToString()),this.dataGrid1[dataGrid1.curentRowInde,1].ToString));
form2.showDialog();
}
在Form2窗体的构造函数中的重载函数中
public Form2(string id,stringname)
{
InitializeComponent();
this.Txtid.Text=id;
this.TxtName.Text=name;
}

这样就可以啦~
呵呵
exing 2007-05-09
  • 打赏
  • 举报
回复
改变一下思路
改一下js:
<script language="javascript">
function Tosubmit(UserID)
{
window.location.href = "Default.aspx?userid="+UserID;
}
</script>

调用的时候再进行传值
hbyelang 2007-05-09
  • 打赏
  • 举报
回复
楼上的已经很详细了
amandag 2007-05-09
  • 打赏
  • 举报
回复
代码是2005的,请自己做更改
amandag 2007-05-09
  • 打赏
  • 举报
回复
//aspx
<form id="form1" runat="server">
<div>
<asp:DataGrid ID="DataGrid1" runat="server" AutoGenerateColumns="False" DataKeyField="au_id" OnItemDataBound="DataGrid1_ItemDataBound">
<Columns>
<asp:TemplateColumn>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "au_id") %>'>'></asp:Label>
<asp:Label ID="Label2" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "au_lname") %>'>'></asp:Label>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
</div>
</form>

//aspx.cs
private void BindGrid()
{
SqlConnection cn = new SqlConnection(@"server=.\SQLExpress;uid=sa;pwd=password;database=pubs");
SqlDataAdapter da = new SqlDataAdapter("select au_id, au_lname from authors", cn);
DataSet ds = new DataSet();
cn.Open();
da.Fill(ds);
cn.Close();
DataGrid1.DataSource = ds;
DataGrid1.DataBind();
}

private void Page_Load(object sender, System.EventArgs e)
{
if (!IsPostBack)
{
BindGrid();
}
}

protected void DataGrid1_ItemDataBound(object sender, DataGridItemEventArgs e)
{
Label label1;

if ((e.Item.ItemType == ListItemType.Item) || (e.Item.ItemType == ListItemType.EditItem) || (e.Item.ItemType == ListItemType.AlternatingItem))
{
label1 = (Label)e.Item.Cells[0].FindControl("Label1");
label1.Attributes.Add("ondblclick", "window.open('Details.aspx?id=" + this.DataGrid1.DataKeys[e.Item.ItemIndex].ToString() + "');");
}
}
wljie 2007-05-09
  • 打赏
  • 举报
回复
我的意思是双击某一行的任意位置都回打开新窗口,不是改成超级链接列
Jeremiah 2007-05-09
  • 打赏
  • 举报
回复
HyperLinkColumn colDetial = new HyperLinkColumn();
colDetial.HeaderText = "详细";
colDetial.HeaderStyle.Width = 50;
colDetial.DataNavigateUrlField = "id"; //你的字段...
colDetial.DataNavigateUrlFormatString = "InsertEditMessage.aspx?messageID={0}";
colDetial.Text = "查看详细";

wljie 2007-05-09
  • 打赏
  • 举报
回复
原来的问题是传的UserID值不正确,现在用<%# Bind("UserID") %>是错误的,请问有没有更好的邦定方法

62,268

社区成员

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

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

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

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