gridview detailsview 问题比较难..盼解...

baihui212 2008-10-23 06:20:05
我做了两个页面Default.aspx和Issuance.aspx,前一个页面中是一个gridview控件,代码如下:

<asp:GridView ID="GridView1" runat="server" AllowSorting="True" AutoGenerateColumns="False"
CellPadding="3" Font-Size="9pt" BackColor="White" BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="1px" AllowPaging="True" DataSourceID="SqlDataSource1" DataKeyNames="RepId">
<FooterStyle BackColor="White" ForeColor="#000066" />
<Columns>
<asp:TemplateField>

<ItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server" />
</ItemTemplate>
</asp:TemplateField>

<asp:BoundField DataField="RepId" Visible=False />
<asp:BoundField DataField="RepName" HeaderText="报表名称" SortExpression="RepName" />
<asp:BoundField DataField="RepTypeName" HeaderText="报表类型" SortExpression="RepTypeName" />
<asp:BoundField DataField="RepComTime" HeaderText="报表生成时间" SortExpression="RepComTime" />
<asp:BoundField DataField="RepStateName" HeaderText="报表状态" SortExpression="RepStateName" />
<asp:TemplateField>
<ItemTemplate>
<a href='<%# Eval("RepStateName").ToString().Trim() == "未发布"?"RepIssuance.aspx?ID={1}":"cancel.aspx?ID={1}" %>'><%# Eval("RepOperation").ToString() %></a>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>

gridview的最后一列是个模板列,实现不同报表状态下的页面跳转。我现在的问题是在Issuance.aspx页面中利用一个DetailsView控件怎么接收gridview传过来的RepId,注意RepId是隐藏了,而gridview的第一列是一个checkbox。
我想把gridview的最后一列转换为利用GridView的HyperLinkField列来完成(请问那样可以实现不同页面的跳转吗),那样利用“DataNavigateUrlFields=RepId”可以传参,但“DataNavigateUrlFormatString”又只能指定一个页面。不知道怎样实现不同页面跳转和传递RepId到DetailsView的目的??(最好给出代码,谢谢……)
...全文
97 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
lizhimin0310 2008-10-23
  • 打赏
  • 举报
回复
d
  • 打赏
  • 举报
回复
如果你感觉写复杂的绑定表达式很乱没有头绪,就写成函数形式!然后在“万能的”函数中再计算要绑定出来的结果值。
  • 打赏
  • 举报
回复
<asp:TemplateField>
<ItemTemplate>
<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# this.跳转路径((string)Eval("RepStateName"),(string)Eval("RepId")) %>'
Text='<%# Eval("RepId") %>' Target="IssuanceWindow"></asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>
  • 打赏
  • 举报
回复
我不知道你的RepId是什么类型,假设是unicode字符串(因此放入url需要Encode),在模板声明中通常可以:
<asp:TemplateField>
<ItemTemplate>
<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# this.跳转路径((string)Eval("yf"),(string)Eval("yf")) %>'
Text='<%# Eval("yf") %>' Target="IssuanceWindow"></asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>

protected string 跳转路径(string state, string id)
{
if (state == "未发布")
return string.Format("RepIssuance.aspx?ID={0}", Server.UrlEncode(id));
else
return string.Format("cancel.aspx?ID={0}", Server.UrlEncode(id));
}

62,046

社区成员

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

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

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

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