GridView行单击事件

yang318 2009-04-22 12:59:25
在GridView中单击某一行,此时会弹出(或跳转)新页面,根据该行商品的ID展现具体商品信息.
请问怎么实现
...全文
1002 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
阿彪兄 2009-04-22
  • 打赏
  • 举报
回复
用超級鏈接列或者模板列都行,上面說得很清楚了
sayluyun 2009-04-22
  • 打赏
  • 举报
回复
答案都出来了··
沉序员 2009-04-22
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 human_2 的回复:]
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{

if (e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.Attributes["onclick"] = String.Format("javascript:window.location={0}", .....);
// 额外样式定义


}
[/Quote]

這個改一下絕對正確.
yang318 2009-04-22
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 takako_mu 的回复:]
用SelectedIndexChanged就可以了


HTML code
<asp:CommandField ButtonType="Button" HeaderText="添加新語言" ShowHeader="True" SelectText="Add" ShowSelectButton="True">
<HeaderStyle Width="1%" Wrap="False" />
<ItemStyle HorizontalAlign="Center" />
</asp:CommandField>





C# code
protected void GridView1_SelectedIndexChanged(object sender, EventAr…
[/Quote]
这里怎么知道选中的是哪一行呢
huang_net 2009-04-22
  • 打赏
  • 举报
回复
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "edit")
{
Server.Transfer("~/EditRoom.aspx?RoomId=" + e.CommandArgument);
}
}

<%@ Page Language="C#" MasterPageFile="~/ContentMaster.master" AutoEventWireup="true" CodeFile="EditRoom.aspx.cs" Inherits="EditRoom" Title="无标题页" %>

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<asp:DetailsView ID="DetailsView1" runat="server" Height="50px" Width="100%"
AutoGenerateRows="False" DataSourceID="objRoom" DefaultMode="Edit"
ondatabound="DetailsView1_DataBound">
<FieldHeaderStyle Width="60px" />
<Fields>
<asp:TemplateField HeaderText="RoomID" SortExpression="RoomID">
<EditItemTemplate>
<asp:TextBox ID="TextBox7" runat="server" Text='<%# Bind("RoomID") %>'></asp:TextBox>
</EditItemTemplate>
<InsertItemTemplate>
<asp:TextBox ID="TextBox7" runat="server" Text='<%# Bind("RoomID") %>'></asp:TextBox>
</InsertItemTemplate>
<ItemTemplate>
<asp:Label ID="Label7" runat="server" Text='<%# Bind("RoomID") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="房间号" SortExpression="Number">
<EditItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" ReadOnly="True"
Text='<%# Bind("Number") %>'></asp:TextBox>
</EditItemTemplate>
<InsertItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("Number") %>'></asp:TextBox>
</InsertItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("Number") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="床位数" SortExpression="BedNumber">
<EditItemTemplate>
<asp:TextBox ID="TextBox2" runat="server" Text='<%# Bind("BedNumber") %>'></asp:TextBox>
</EditItemTemplate>
<InsertItemTemplate>
<asp:TextBox ID="TextBox2" runat="server" Text='<%# Bind("BedNumber") %>'></asp:TextBox>
</InsertItemTemplate>
<ItemTemplate>
<asp:Label ID="Label2" runat="server" Text='<%# Bind("BedNumber") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="描述" SortExpression="Description">
<EditItemTemplate>
<asp:TextBox ID="TextBox3" runat="server" Height="150px"
Text='<%# Bind("Description") %>' TextMode="MultiLine" Width="250px"></asp:TextBox>
</EditItemTemplate>
<InsertItemTemplate>
<asp:TextBox ID="TextBox3" runat="server" Text='<%# Bind("Description") %>'></asp:TextBox>
</InsertItemTemplate>
<ItemTemplate>
<asp:Label ID="Label3" runat="server" Text='<%# Bind("Description") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="房间类型" SortExpression="RoomType">
<EditItemTemplate>
<asp:TextBox ID="TextBox6" runat="server"
Text='<%# Eval("RoomType.TypeName") %>'></asp:TextBox>
<asp:HiddenField ID="HiddenField1" runat="server"
Value='<%# Eval("RoomType.TypeId") %>' />
</EditItemTemplate>
<InsertItemTemplate>
<asp:TextBox ID="TextBox6" runat="server" Text='<%# Bind("RoomType") %>'></asp:TextBox>
</InsertItemTemplate>
<ItemTemplate>
<asp:Label ID="Label6" runat="server" Text='<%# Bind("RoomType") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="状态" SortExpression="State">
<EditItemTemplate>
<asp:TextBox ID="TextBox4" runat="server"
Text='<%# GetRoomType(Eval("State").ToString()) %>'></asp:TextBox>
</EditItemTemplate>
<InsertItemTemplate>
<asp:TextBox ID="TextBox4" runat="server" Text='<%# Bind("State") %>'></asp:TextBox>
</InsertItemTemplate>
<ItemTemplate>
<asp:Label ID="Label4" runat="server" Text='<%# Bind("State") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="客人数" SortExpression="GuestNumber">
<EditItemTemplate>
<asp:TextBox ID="TextBox5" runat="server" Text='<%# Bind("GuestNumber") %>'></asp:TextBox>
</EditItemTemplate>
<InsertItemTemplate>
<asp:TextBox ID="TextBox5" runat="server" Text='<%# Bind("GuestNumber") %>'></asp:TextBox>
</InsertItemTemplate>
<ItemTemplate>
<asp:Label ID="Label5" runat="server" Text='<%# Bind("GuestNumber") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField ShowHeader="False">
<EditItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" CommandName="update">更新</asp:LinkButton>
</EditItemTemplate>
</asp:TemplateField>
</Fields>
</asp:DetailsView>
<asp:ObjectDataSource ID="objRoom" runat="server"
DataObjectTypeName="HotelModel.Room"
OldValuesParameterFormatString="original_{0}" onupdated="objRoom_Updated"
onupdating="objRoom_Updating" SelectMethod="GetRoomByRoomId"
TypeName="HotelBLL.RoomManager" UpdateMethod="UpdateRoom">
<SelectParameters>
<asp:QueryStringParameter Name="roomId" QueryStringField="roomId"
Type="Int32" />
</SelectParameters>
</asp:ObjectDataSource>
</asp:Content>

whitebo 2009-04-22
  • 打赏
  • 举报
回复
protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
...{
//注册行单击事件
e.Row.Attributes.Add("onclick", "javascirpt:你要执行的操作");
}
ID用e.Row.RowIndex 获取
takako_mu 2009-04-22
  • 打赏
  • 举报
回复
如果是彈出新頁面(window.open())建議用js做.

//绑定链接
protected void CPSGridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
string plant = string.Empty;
string sloc = string.Empty;
string material = string.Empty;
string mvt = string.Empty;
string inorout = string.Empty;
if (e.Row.RowType == DataControlRowType.DataRow)
{
plant = e.Row.Cells[1].Text.Trim();
sloc = e.Row.Cells[2].Text.Trim();
material = e.Row.Cells[3].Text.Trim();
mvt = e.Row.Cells[6].Text.Trim();
inorout = e.Row.Cells[8].Text.Trim();
e.Row.Cells[3].Text = "<a href=\"javascript:OpenPage('" + plant + "','" + sloc + "','" + material + "','" + mvt + "','" + inorout + "')\">" + material + "</a>";
}
}



// JScript File

function OpenPage(plant,sloc,material,mvt,inorout)
{
var page="SSTDBDetail.aspx?Plant="+plant+"&SLoc="+sloc+"&Material="+material+"&Mvt="+mvt+"&InOrOut="+inorout ;
window.open (page, 'newwindow', 'height=500, width=1000, top=0, left=0, toolbar=no, menubar=no, scrollbars=yes, resizable=yes,location=n o, status=no')
}
human_2 2009-04-22
  • 打赏
  • 举报
回复
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{

if (e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.Attributes["onclick"] = String.Format("javascript:window.location={0}", .....);
// 额外样式定义


}
takako_mu 2009-04-22
  • 打赏
  • 举报
回复
用SelectedIndexChanged就可以了


<asp:CommandField ButtonType="Button" HeaderText="添加新語言" ShowHeader="True" SelectText="Add" ShowSelectButton="True">
<HeaderStyle Width="1%" Wrap="False" />
<ItemStyle HorizontalAlign="Center" />
</asp:CommandField>



protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
Response.Redirect("~/B.aspx?QID=" + aQid + "&Flag=1");
}
itcrazyman 2009-04-22
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wuyq11 的回复:]
通过hyperlink或a href链接页面。
或在databound里添加行的js脚本,实现跳转。

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowIndex != -1)
{
e.Row.Attributes.Add("onclick", "Url('" + this.GridView1.DataKeys[e.Row.RowIndex].Value.ToString().Trim() + "')");
}
}
参考
[/Quote]
up 帮顶
wuyq11 2009-04-22
  • 打赏
  • 举报
回复
通过hyperlink或a href链接页面。
或在databound里添加行的js脚本,实现跳转。

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowIndex != -1)
{
e.Row.Attributes.Add("onclick", "Url('" + this.GridView1.DataKeys[e.Row.RowIndex].Value.ToString().Trim() + "')");
}
}
参考
xiaozhihongxzh 2009-04-22
  • 打赏
  • 举报
回复
不可以做成单击某一列时弹出(或跳转)新页面吗
如果可以这样的话
可以用个模板列

62,267

社区成员

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

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

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

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