C# 如何在ASP.NET GridView中为按钮/链接添加href
我有一个ASP.NET web应用程序,它处理来自其他站点的一些数据,并在gridview中显示信息。我不知道gridview将有多少行,也不知道有多少列 在这个gridview中,我有一个用于添加复选框的templatefield。 其余的列是使用绑定到此gridview的DataTable添加的。现在的问题是,在10列之后,我有一个URL,我想显示为按钮或链接。在这个链接之后,我有x个列 如何在具有动态行的GridView中添加位于静态列和动态列之间的URL 我试着写a href=link。。在DataTable中,但它将其显示为文本。 我发现一篇文章建议使用HtmlDecode,但为了实现这一点,我需要使用boundfields来设置htmlencode=false..或类似的内容 有没有办法做到这一点?或者我应该在itemtemplate中移动包含复选框的链接并尝试将其设置在那里吗C# 如何在ASP.NET GridView中为按钮/链接添加href,c#,asp.net,gridview,webforms,C#,Asp.net,Gridview,Webforms,我有一个ASP.NET web应用程序,它处理来自其他站点的一些数据,并在gridview中显示信息。我不知道gridview将有多少行,也不知道有多少列 在这个gridview中,我有一个用于添加复选框的templatefield。 其余的列是使用绑定到此gridview的DataTable添加的。现在的问题是,在10列之后,我有一个URL,我想显示为按钮或链接。在这个链接之后,我有x个列 如何在具有动态行的GridView中添加位于静态列和动态列之间的URL 我试着写a href=link。
您可以使用MatchGrid\u RowDataBound方法查看列并根据需要添加按钮。
下面是如何在RowDataBound上添加按钮的示例:
您可以使用
OnRowDataBound
进行此操作。它将在GridView中插入额外的单元格。在将DataTable绑定到GridView之前,还可以在DataTable中插入额外的列
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
//header
if (e.Row.RowType == DataControlRowType.Header)
{
//add 6 cells
for (int i = 1; i <= 6; i++)
{
TableHeaderCell headerCell = new TableHeaderCell();
if (i == 6)
{
headerCell.Text = "URL";
}
else
{
headerCell.Text = "Static " + i;
}
//add the new cell to the gridview
e.Row.Cells.AddAt(i, headerCell);
}
}
//normal row
if (e.Row.RowType == DataControlRowType.DataRow)
{
//cast the current row to a datarowview
DataRowView row = e.Row.DataItem as DataRowView;
//add 6 cells
for (int i = 1; i <= 6; i++)
{
TableCell cell = new TableCell();
if (i == 6)
{
cell.Text = string.Format("<a target=\"_blank\" href=\"{0}\">{0}</a>", row["myURL"]);
}
else
{
cell.Text = "Enter stuff here...";
}
//add the new cell to the gridview
e.Row.Cells.AddAt(i, cell);
}
}
}
受保护的无效GridView1\u行数据绑定(对象发送方,GridViewRowEventArgs e)
{
//标题
if(e.Row.RowType==DataControlRowType.Header)
{
//添加6个单元格
对于(int i=1;我可以帮你发布一些当前视图的图片,也许你希望它看起来像什么?这将有助于澄清很多问题。这也有助于了解你如何绑定数据添加了一个图像。上表是我现在拥有的。下表是我希望它是什么。希望它有帮助我尝试在RowDataBound:Lin中这样做kButton artLink=new LinkButton();artLink.OnClientClick=“window.open”(“+currentUrl+”);“artLink.Text=”查看“+e.Row.Cells[3]上的文章。Text;e.Row.Cells[12]。控件。添加(artLink);//链接出现了,但只起作用了一次。单击它后,它就会消失。我按照你的建议做了,按钮会出现在GridView中,但当我单击它时,它就会消失。你知道我可以做些什么,这样它就不会更新表了吗?我想我应该做一些类似于如果(!Page.IsPostBack){..},但我不知道应该把它放在哪里,通过在OnClientClick()中添加“return=false”来管理按钮,使其不回发。有效。谢谢!我刚刚发现在RowDataBound上动态添加的元素只会持续到下一次回发。我的页面上有一些其他按钮,这些按钮不应该回发任何内容。例如,我有一些导出到excel按钮,当我单击这些按钮时,动态添加的按钮会消失。我该怎么做才能阻止这种情况haviour?我需要在javascript中移动所有按钮吗?如果可以,我会移动页面加载中的“添加按钮”部分,这样就不会发生这种情况,但我不能。我需要通过动态方式进行移动。有什么解决方案吗?谢谢!您需要在每次回发时重新创建动态控件。因此,如果(!IsPostBack)
检查,请将gridview的绑定移到外部。