请教高手:DataGrid超级链接传递参数的问题

houxw 2003-04-16 09:56:26
在一DataGrid中建立了一个超级链接列传递参数,

<asp:HyperLinkColumn
Text="详 细"
Target="_blank"
DataNavigateUrlField="Title"
DataNavigateUrlFormatString="Show_News.aspx?Title={0}"
HeaderText="详 细">
</asp:HyperLinkColumn>

传递参数Title的时候,发现Title的数据没有进行Url编码

例如超级链接为:Show_News.aspx?Title=南京地铁A9标传来喜讯
的时候,在Show_News.aspx里面无法取到完整的title内容


请问:如何在DataGrid中将Title的内容进行Url编码?
...全文
35 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
gohome123 2003-04-17
  • 打赏
  • 举报
回复
DataGrid.DataKeys[(int)e.Item.ItemIndex].ToString()

其中DataGrid为网格控件名称, 以上语句实际是你点击的记录的DataKeyField值


DataSet ds = new DataSet();
myCommand.Fill(ds, "TX");
MyDataGrid.DataSource = ds.Tables["TX"].DefaultView;

int number = ds.Tables["TX"].Rows.Count;
for(int i=0;i<number;i++)
{
ds.Tables["TX"].Rows[i].BeginEdit();
ds.Tables["TX"].Rows[i]["qymc"] = "<a href='scydj.aspx?id=" + ds.Tables ["TX"].Rows[i]["u_hmqqlsh"].ToString() + "' target='_top'>" + ds.Tables["TX"].Rows[i]["qymc"].ToString() + "</a>";
ds.Tables["TX"].Rows[i].AcceptChanges ();
}

MyDataGrid.DataBind();
gOODiDEA 2003-04-17
  • 打赏
  • 举报
回复
试试

在ItemDataBound事件里做

//假设第一列为超级链接列
private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if ( ( e.Item.ItemType != ListItemType.Header ) && ( e.Item.ItemType != ListItemType.Footer ) )
{
e.Item.Cells[0].Text = "<a href=" + Server.UrlEncode( ( ( HyperLink ) e.Item.Cells[0].Controls[0] ).NavigateUrl ) + ">" + ( ( HyperLink ) e.Item.Cells[0].Controls[0] ).Text + "</a>";
}
}
gOODiDEA 2003-04-17
  • 打赏
  • 举报
回复
Try

在ItemDataBound事件里做

//假设第一列为超级链接列
private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if ( ( e.Item.ItemType != ListItemType.Header ) && ( e.Item.ItemType != ListItemType.Footer ) )
{
string strTest = HttpUtility.UrlEncode( ( ( HyperLink ) e.Item.Cells[0].Controls[0] ).NavigateUrl );
e.Item.Cells[0].Text = "<a href=" + strTest + ">" + ( ( HyperLink ) e.Item.Cells[0].Controls[0] ).Text + "</a>";
}
}

保持Web.Config语言设置为utf-8
cmsoft 2003-04-17
  • 打赏
  • 举报
回复
try:
<asp:HyperLinkColumn
Text="详 细"
Target="_blank"
NavigateUrl="Show_News.aspx?Title=<%# Server.URLEncode(DataBinder.Eval(Container.DataItem,"title")) %>"
HeaderText="详 细">
</asp:HyperLinkColumn>
houxw 2003-04-17
  • 打赏
  • 举报
回复
谢谢大家!

TO:lvenlee(大头)
DataGrid中HyperLinkColumn模版无法添加<% response.write %>类似的内容

TO:net_lover(孟子E章)
您给的网址好像与我的问题无关

TO:buaawjh(猪猪爱咬咬)
按照您的说法修改了web.config相应属性,英文数字可以正常传输,但是类似"#"这样的符号还是无法传输。

请问有进一步的解决方法吗?
buaawjh 2003-04-16
  • 打赏
  • 举报
回复
<globalization requestEncoding="gb2312" responseEncoding="gb2312" />
孟子E章 2003-04-16
  • 打赏
  • 举报
回复
http://lucky_elove.www1.dotnetplayground.com/
lvenlee 2003-04-16
  • 打赏
  • 举报
回复
可以采用:Server.URLEncode(你要编码的数据)

Code:
<% Response.Write Server.URLEncode("http://www.SOOYEAH.com") %>

Output:
http%3A%2F%2Fwww%2Eissi%2Enet

同时提醒你将配件文件中的REQUEST编码方式改为GB2312

我的WEB.CONFIG

<configuration>

<appSettings>
<add key="connstring" value="provider=Microsoft.Jet.Oledb.4.0;data source='d:\item\mh\db1.mdb'" />
</appSettings>

<system.web>

<compilation defaultLanguage="vb" debug="true" />



<globalization requestEncoding="gb2312" responseEncoding="gb2312" />
<customErrors mode="Off"/>
</system.web>

</configuration>

62,046

社区成员

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

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

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

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