【发布时间】:2014-10-28 08:20:05
【问题描述】:
我目前正在使用 VS 2008 进行开发(ASP.NET C#)。
目前我在使用 GridView 时遇到了一些问题:
我使用 DataSet(从数据库查询)将数据绑定到 GridView 数据源,然后我有一个复选框,允许用户使用以下方法隐藏或显示列:
if (chkPhone.Checked == true) { strSQL += ", recruit_website as 'Website'"; }
好的,现在我面临的问题是,如何使这个特定的列行用锚标记包装?这样用户就可以通过 GridView 直接访问相应的网站。
所以我使用的第一种方法是使用“RowDataBound”事件并执行以下操作:
e.Row.Cells[7].Text = "<a href='" + e.Row.Cells[7].Text + '">Click Me</a>";
但是问题来了,如果用户选择不显示此列,则列索引会有所不同。 (用户有更多选项可以隐藏列,因此索引中的 -1 没有意义)
所以这种方法失败了,我尝试使用另一种方法,即在“RowDataBound”事件中使用 DataRowView:
if (e.Row.RowType == DataControlRowType.DataRow)
{
DataRowView rowView = (DataRowView)e.Row.DataItem;
rowView["Website"] = "something"; //something to deal with here
}
使用此方法,我可以使用列名从 GridView 中获取值,但我无法设置值。
那么对于这种情况最好的解决方案是什么?
【问题讨论】:
-
我有一个建议:您可能应该在数据绑定之前更改该列的值。这样您就不必担心用户对可见列的选择。希望对你有帮助
-
@Koen 是的,我在从 MS SQL 获取数据时尝试过使用 CONCAT,但是在 Gridview 中显示时,如果您知道如何将特定列编码为html 然后这个问题就解决了 :) 谢谢你的建议!
-
与论坛网站不同,我们不使用“谢谢”、“感谢任何帮助”或Stack Overflow 上的签名。请参阅“Should 'Hi', 'thanks,' taglines, and salutations be removed from posts?.
标签: c# asp.net gridview webforms