gridview已经配置好数据源,其中的一列也已经加上超级链接,我想在这一列中任意一个单元格上单击时打开一个新的页面(已实现),然后在新页面上根据鼠标的点击决定显示些什么内容有点啰嗦,但是我也不知道该怎么说才能明白,这样吧,假设目前页面是a.aspx,页面上放了gridview控件,共有5列,记为c1-c5,现在,c1列里有r行数据,记为r1-rn,n的值由数据库中的内容自行确定,c1列里每行都是加了超链接的,我希望任意点击一个单元格,譬如r2行c1列,那么新弹出一个页面(已实现),这个新页面上也放一个gridview控件,显示内容根据刚才的r2行c1列的内容来确定,我想知道1、如何根据鼠标点击确定具体的行数,因为我觉得只有这样才能获得单元格里的内容;2、如何获取鼠标点击的单元格里的内容并传给新页面(用session?);3、不要吧超连接去掉。非常感谢!
Eval方式 <%# Eval("id") %>
Bind方式 <%# Bind("id","~/info.aspx?id={0}") %>推荐使用第一种方式,可以在一个<%# %>里放入多个绑定,而第二种只能如此绑定一个值
<%# Eval("id") + ":" + Eval("name")%>做超级链接的控件,我们也有多种选择:
1 asp:LinkButton
示例
<asp:LinkButton ID="LinkButton2" OnClientClick=<%# "window.open('info.aspx?id=" + Eval("id") + "&name=" + Eval("name") + "')" %> runat="server"><%# "LinkButton方式绑定:" + Eval("id") %></asp:LinkButton>2 asp:HyperLink
示例
<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# "~/info.aspx?id=" + Eval("id") + "&name=" + Eval("name") %>' Text='<%# "HyperLink控件:" + Eval("id") %>'></asp:HyperLink>3 a标签
示例
<a href='<%# "info.aspx?id=" + Eval("id") + "&name=" + Eval("name") %>'>a标签:<%# Eval("id") + ":" + Eval("name")%></a>
<a href='javascript:alert("<%# "~/info.aspx?id=" + Eval("id") + "&name=" + Eval("name") %>")'>链接js事件:<%# Eval("id") %></a>
其中红色字体LinkButton就是超链接那列的控件类型!(你应该用超链接),
indexRow 就是你点击的行索引,得到行了再获取这行的cells[]就可以了!
{
protected void Page_Load(object sender, EventArgs e)
{
//string sgdwname = Session["zjgs"].ToString();
}
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
//int rowNumber = int.Parse(e.CommandArgument.ToString());
//string ID = GridView1.Rows[rowNumber].Cells[2].Text.ToString();
//Label1.Text = ID;
int indexRow = ((GridViewRow)((HyperLink)e.CommandSource).Parent.Parent).RowIndex;
Label1.Text = GridView1.Rows[indexRow].Cells[2].ToString();
} protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{ }
protected void SqlDataSource1_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
{ }我的怎么执行不到红色这里呢?设了断点,page-load执行完,一点超级链接就自己跑到新页面去了,下面的程序没执行,还是这段应该放到aspx页面里?新手,又是赶鸭子上架,没几天就要交活了,莫拍我
你的链接是不是写在前台的“超链接”形式啊?如果是的话肯定不会执行红色部分了,必须是后台事件才能执行,你试着把超链接那列转换成“TemplateField”
1 <Columns>
2 <asp:BoundField DataField="sgdw" HeaderText="施工单位" SortExpression="sgdw" />
3 <asp:BoundField DataField="yqkfdw" HeaderText="油气开发单位" SortExpression="yqkfdw" />
4 <asp:TemplateField HeaderText="井号">
5 <ItemTemplate>
6 <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# Eval("jinghao", "javascript:window.open('particulauselect.aspx?jinghao={0}')") %>'
Target="_blank" Text='<%# Eval("jinghao") %>'></asp:HyperLink>
7 </ItemTemplate>
8 </asp:TemplateField>
<asp:BoundField DataField="jcsj" HeaderText="检测时间" SortExpression="jcsj" />
<asp:BoundField DataField="sp" HeaderText="批准人" SortExpression="sp" />
</Columns>4、5、6行反复执行了大概两、三次,label1的文字也没有改变,好像还是没有读出来,呵呵,毕竟已经有所改变了,我再尝试下,非常感谢,实在撑不住了继续请教,希望能继续给与帮助