求解.Gridview列跳转的问题..!~在线等待....waiting.......

poppinH 2010-08-25 10:10:07
小弟现在有个Gridview前台代码是:
<asp:TemplateField>
<HeaderTemplate>标题</HeaderTemplate>
<ItemTemplate> <%#Eval("scb04")%> </ItemTemplate>
<ItemStyle Width="260px" Wrap="false" HorizontalAlign="Center" CssClass="ListCellrow" />
<HeaderStyle CssClass="ListCellTitle" Wrap="false" />
</asp:TemplateField>


希望把下面这段后台的实现,就是直接放在点击 [<ItemTemplate> <%#Eval("scb04")%> </ItemTemplate> ]里
  
string sce = ""; 用来存储gridview每行的ID
for (int i = 0; i <= GridView1.Rows.Count - 1; i++)//循环整个gridview每页的行数
CheckBox cbox = (CheckBox)GridView1.Rows[i].FindControl("check_xz1"); //每行前都有一个checbox.
if (cbox.Checked == true)//判断行前的checkbox是否被选中
{
message chage = new message();
sce = this.GridView1.DataKeys[i].Value.ToString(); //获取存储gridview每行的ID
SqlDataReader dr = chage.bandrecjl(sce);//从数据库中获取该文件是否被阅读
string sce06 = ""; //定义变量,存储接收的从数据库中获得文件是否被阅读的值
string sce04 = "";//定义变量,存储当前系统时间
sce04 = DateTime.Now.ToString();
if (dr.Read())
{
sce06 = dr["sce06"].ToString();
}
if (sce06 == "N")//sce06为N时,为首次阅读,调用chagerec更改sce06为Y且更改首次阅读时间
{
message chagerec = new message();
chagerec.changrec(sce, sce04);
}
if (sce06 == "Y")//sce06为Y时,为再次阅读,调用ydjl更改阅读次数和最后阅读时间.
{
message gjl = new message();
gjl.ydjl(sce, sce04);
}
Response.Redirect("readrecmsg.aspx?sce01=" + sce + ""); //将文件id传递readrecmsg.aspx页面,然后再在该页面查看通过该ID查看具体的文件内容
}
else
{
Response.Write("<script>alert('请选择要查看的通知!!')</script>");
Response.Write("<script>history.go(-1)</script>");
}
}
...全文
139 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
poppinH 2010-08-26
  • 打赏
  • 举报
回复
战果分享:
前台代码:
<asp:GridView ID="GridView1" runat="server" OnRowCommand="GridView1_RowCommand"
<asp:TemplateField HeaderText="标题">
           <ItemTemplate>
              <asp:LinkButton ID="lbtnRecordid" CommandName="lbtn" runat="server" ForeColor="Blue" Text='<%# DataBinder.Eval(Container.DataItem,"scb04") %>' CommandArgument='<%# Eval("sce01") %>'></asp:LinkButton>
              <ItemStyle Width="260px" Wrap="False" HorizontalAlign="Center" CssClass="ListCellrow" />
<HeaderStyle CssClass="ListCellTitle" Wrap="False" />
          </ItemTemplate>
</asp:GridView>
前台代码只贴出有用的..其他的样式之类的废柴代码就不贴了."GridView1_RowCommand"这个很重要..相应后台程序的.我刚开始就是没加这个..老是相应不了..!~ CommandArgument='<%# Eval("sce01") % 这个是获取你要处理的这一行的唯一标识..我是从数据库里拿出来的..所以就直接用Eval了


后台代码:

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)//前台定义的那个GridView1_RowCommand
{
string sce = "";//定义个变量,用来接收你选择行的唯一标识
if (e.CommandName == "lbtn")//判断你选择的是哪行
{

sce = e.CommandArgument.ToString();//定义的变量接收e.CommandArgument传递的值
//底下的都是在用接收过来的变量进行操作
message chage = new message();
SqlDataReader dr = chage.bandrecjl(sce);
string sce06 = ""; //定义变量,存储接收的sce06值.
string sce04 = "";//定义变量,存储当前系统时间
sce04 = DateTime.Now.ToString();
if (dr.Read())
{
sce06 = dr["sce06"].ToString();
}
if (sce06 == "N")//sce06为N时,为首次阅读,调用chagerec更改sce06为Y且更改首次阅读时间
{
message chagerec = new message();
chagerec.changrec(sce, sce04);
}
if (sce06 == "Y")//sce06为Y时,为再次阅读,调用ydjl更改阅读次数和最后阅读时间.
{
message gjl = new message();
gjl.ydjl(sce, sce04);
}
Response.Redirect("readrecmsg.aspx?sce01=" + sce + "");
}
}
poppinH 2010-08-26
  • 打赏
  • 举报
回复
哈哈..解决了..!~结贴散分..我会发帖,分享战果的..需要的看下面的我自己的跟贴吧.!~我先结贴..!~
jinguanghai 2010-08-26
  • 打赏
  • 举报
回复
期待LZ做出来,然后把实现代码分享一下!谢谢
a554621461 2010-08-26
  • 打赏
  • 举报
回复
好,这个问题俺也想问
poppinH 2010-08-26
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 qdwangle 的回复:]
ls几位说的都可以实现...如果只是跳转,建议直接用<a href=""></a>也就是如梦的代码...
[/Quote]

不是直接跳转..!还要实现点功能的....功能描述我在15楼有详细描述的..!~
村长_乐 2010-08-26
  • 打赏
  • 举报
回复
ls几位说的都可以实现...如果只是跳转,建议直接用<a href=""></a>也就是如梦的代码...
poppinH 2010-08-26
  • 打赏
  • 举报
回复
<asp:TemplateField HeaderText="标题">
           <ItemTemplate>
              <asp:LinkButton ID="lbtnRecordid" CommandName="lbtn" runat="server" ForeColor="Blue" Text='<%# DataBinder.Eval(Container.DataItem,"scb04") %>'></asp:LinkButton>
          </ItemTemplate>
      </asp:TemplateField>


我加了个这个..在后台用
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "lbtn")
{
//代码
}
}

为什么不好使啊..!~?我代码应该怎么写才能实现下面的那串代码功能! 即:点击某一列,进入该列对应的详细信息查看...先判断此信息是否曾经被读过,如果没有,为首次阅读,修改首次阅读时间,并修改该记录状态为已读.如果为已读,则修改最后阅读时间.我现在需要的代码跟以前的巨大差异就是以前是放在button的click事件中,然后先选中每行前面的checkbox,当触发onclick事件的时候,遍历整个checkbox,拿出被选中的值,进行操作...现在我要的是没有checkbox 仅仅就是点击这个链接.就出发这个事件..获得每行的id,然后将这个id带入下面的代码中进行操作.!
现在的代码如下:
 string sce = "";  用来存储gridview每行的ID     
for (int i = 0; i <= GridView1.Rows.Count - 1; i++)//循环整个gridview每页的行数
CheckBox cbox = (CheckBox)GridView1.Rows[i].FindControl("check_xz1"); //每行前都有一个checbox.
if (cbox.Checked == true)//判断行前的checkbox是否被选中
{
message chage = new message();
sce = this.GridView1.DataKeys[i].Value.ToString(); //获取存储gridview每行的ID
SqlDataReader dr = chage.bandrecjl(sce);//从数据库中获取该文件是否被阅读
string sce06 = ""; //定义变量,存储接收的从数据库中获得文件是否被阅读的值
string sce04 = "";//定义变量,存储当前系统时间
sce04 = DateTime.Now.ToString();
if (dr.Read())
{
sce06 = dr["sce06"].ToString();
}
if (sce06 == "N")//sce06为N时,为首次阅读,调用chagerec更改sce06为Y且更改首次阅读时间
{
message chagerec = new message();
chagerec.changrec(sce, sce04);
}
if (sce06 == "Y")//sce06为Y时,为再次阅读,调用ydjl更改阅读次数和最后阅读时间.
{
message gjl = new message();
gjl.ydjl(sce, sce04);
}
Response.Redirect("readrecmsg.aspx?sce01=" + sce + ""); //将文件id传递readrecmsg.aspx页面,然后再在该页面查看通过该ID查看具体的文件内容
}
else
{
Response.Write("<script>alert('请选择要查看的通知!!')</script>");
Response.Write("<script>history.go(-1)</script>");
}
}
wuyq11 2010-08-25
  • 打赏
  • 举报
回复
<asp:HyperLinkField DataNavigateUrlFormatString="a.aspx?id={0}"
Text="详细" DataNavigateUrlFields="id" />
<a href="a.aspx?id=<%# eval("id")%>"/>
poppinH 2010-08-25
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 unopenmycode 的回复:]
我新建了一个模板列,模板列有button元素,我给它添加属性CommandName="DoThisMethod",属性CommandArgument='<%# Eval("scb04") %>'

这样在后台GridView的RowCommand事件中可以根据这个CommandName属性抓取到CommandArgument
[/Quote]

谢谢哥..!~我去开个会..!~一会回来试下..!~3Q!~~
安欧碰麦蔻德 2010-08-25
  • 打赏
  • 举报
回复
我新建了一个模板列,模板列有button元素,我给它添加属性CommandName="DoThisMethod",属性CommandArgument='<%# Eval("scb04") %>'

这样在后台GridView的RowCommand事件中可以根据这个CommandName属性抓取到CommandArgument
poppinH 2010-08-25
  • 打赏
  • 举报
回复
额...我以前是用button的onclick事件.先选中前面的checkbox.然后再点击button.
更改后,直接用点某列就可以了..所以不用考虑checkbox!


麻烦2楼的GG...能解释一下你发的代码是什么意思么? 小弟初学..很笨..!~但是很好奇...麻烦麻烦了..!

4楼的哥哥...我想问下...用你的这段代码.怎么把我的<%#Eval("scb04")%> 放进去啊?
一克代码 2010-08-25
  • 打赏
  • 举报
回复
看哥的!

<asp:HyperLinkField DataNavigateUrlFormatString="chuzixiangxi.aspx?id={0}"
Text="详细" DataNavigateUrlFields="id" />
安欧碰麦蔻德 2010-08-25
  • 打赏
  • 举报
回复
记得给哥分哦。
安欧碰麦蔻德 2010-08-25
  • 打赏
  • 举报
回复
试试哥的代码:

<asp:TemplateField HeaderText="标题">
<ItemTemplate>
<asp:Button ID="BtnBlackList" runat="server" Text="<%# Eval("scb04") %>" CommandName="DoThisMethod"
CommandArgument='<%# Eval("scb04") %>' />
</ItemTemplate>
</asp:TemplateField>


protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "DoThisMethod")
{
///把你的后台代码放入里面

}

}
lishuai1030 2010-08-25
  • 打赏
  • 举报
回复
什么意思 你checkbox在哪里?在搞个按钮不就行了 放到click事件中
如果是点击查看某一条的话就直接用hyperlink列啊 直接传参数 就行了
poppinH 2010-08-25
  • 打赏
  • 举报
回复
....谁能具体的给个例子看看,....!~
nevernamed 2010-08-25
  • 打赏
  • 举报
回复
这个就简单了,他们说的基本都可以解决。

在模板里加按钮,设置按钮CommandName属性为Update,添加GridView的RowUpdateing事件。

把你的方法放到这个事件里即可。

poppinH 2010-08-25
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 nevernamed 的回复:]
你每一行都有一个跳转链接,在执行跳转方法的时候怎么需要遍历每一行?

如果你是要在选择多行以后再综合选择信息跳转,大可以在表格外放个按钮做跳转。
[/Quote]

我是每一行要一个跳转链接.!~以前的遍历每一行是我用button的onclick事件用的..!~这个在新的模式里可以忽略的..!~
nevernamed 2010-08-25
  • 打赏
  • 举报
回复
你每一行都有一个跳转链接,在执行跳转方法的时候怎么需要遍历每一行?

如果你是要在选择多行以后再综合选择信息跳转,大可以在表格外放个按钮做跳转。

poppinH 2010-08-25
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 wuyq11 的回复:]
<asp:HyperLinkField DataNavigateUrlFormatString="a.aspx?id={0}"
Text="详细" DataNavigateUrlFields="id" />
<a href="a.aspx?id=<%# eval("id")%>"/>
[/Quote]

如梦..!~你再详细说下可以么?
加载更多回复(1)

62,041

社区成员

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

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

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

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