Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在ASP.NET GridView中为按钮/链接添加href_C#_Asp.net_Gridview_Webforms - Fatal编程技术网

C# 如何在ASP.NET GridView中为按钮/链接添加href

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。

我有一个ASP.NET web应用程序,它处理来自其他站点的一些数据,并在gridview中显示信息。我不知道gridview将有多少行,也不知道有多少列

在这个gridview中,我有一个用于添加复选框的templatefield。 其余的列是使用绑定到此gridview的DataTable添加的。现在的问题是,在10列之后,我有一个URL,我想显示为按钮或链接。在这个链接之后,我有x个列

如何在具有动态行的GridView中添加位于静态列和动态列之间的URL

我试着写a href=link。。在DataTable中,但它将其显示为文本。 我发现一篇文章建议使用HtmlDecode,但为了实现这一点,我需要使用boundfields来设置htmlencode=false..或类似的内容

有没有办法做到这一点?或者我应该在itemtemplate中移动包含复选框的链接并尝试将其设置在那里吗


您可以使用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的绑定移到外部。