【问题标题】:how to make hyperlink in gridview without datafield?如何在没有数据字段的gridview中制作超链接?
【发布时间】:2017-12-08 19:02:31
【问题描述】:

开发于:c# asp.net web forms 4.5

我查看了很多帖子,所有帖子都通过 datatextfield() 或类似的方式在其中创建了包含数据字段的超链接。或者从后端调用 eval。 这两个我都没有做,所以我尽我所能做每一件事,但没有奏效。 CommandField、HyperLinkeField、HyperLink、.. 都不起作用。

主要的一点是数据很好,但我似乎无法将其设为超链接。这种方式不能有超链接吗?

我正在尝试在 gridview 上创建一个超链接。 问题是我试图制作超链接的专栏 不从数据字段中获取数据。

通过gridview的onRowDataBound方法获取 像这样..

<asp:GridView runat="server" ID="someGrid" CellPadding="10" 
    DataKeyNames="idx" AutoGenerateColumns="false"
    selectMethod="someGrid_GetData" ItemType="someTable"
    updateMethod="someGrid_UpdateItem" AutoGenerateEditButton="true"
    deleteMethod="someGrid_DeleteItem" AutoGenerateDeleteButton="true"
    onRowDataBound="someGrid_RowDataBound">
    <Columns>
        <asp:BoundField DataField="thing1" HeaderText="thing1" />
        <asp:BoundField DataField="thing2" HeaderText="thing2"/>
        <asp:DynamicField DataField="poDate" DataFormatString="{0:d}" />
        <asp:BoundField HeaderText="vendor" />
        <asp:CommandField HeaderText="sku" ShowSelectButton="true" SelectText="{0}" ButtonType="Link"/>
    </Columns>
</asp:GridView>

在代码背景上,它是这样的..

    protected void soGrid_RowDataBound(object sender, GridViewRowEventArgs e)
    {  
        using (soAction soa = new soAction())
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                string s = e.Row.Cells[2].Text;
                string thin1 = soa.get_thin1(s);
                e.Row.Cells[4].Text = thin1;

                string thin2 = soa.get_thin2(s);
                e.Row.Cells[5].Text = thin2;
            }
        }
    }

谢谢!

编辑: 也许我不清楚这里的挑战是什么.. 通常这些示例在 gridview 中使用 dataTextField 属性,但是 我无法使用 dataTextField 属性,因为我正在绑定数据 取决于之后渲染的模型。 我这样做是因为我想将 itemType 设置为 someTable 这样我就可以使用asp.net的updatemethod和deleteMethod了。

【问题讨论】:

  • new DataGridViewLinkColumn(); 上进行谷歌搜索,例如它非常简单
  • @MethodMan 谢谢老兄。会做。不知道那个。
  • 这就是Google.com 的用途.. 其他人和您自己都应该养成这种习惯,这意味着首先搜索.. 询问第二
  • @MethodMan 我不认为我们可以使用 DataGridViewLinkColumn.. 它是用于 winForm 的,对吗?我正在构建一个 web 表单 asp.net 4.5 版本,我这里无法导入...
  • 好的,然后用 google 搜索使用 asp.net 网络表单的示例.. 来吧..

标签: c# asp.net gridview webforms .net-4.5


【解决方案1】:

只需使用这样的 TemplateField,您就可以在模板字段中做任何您想做的事情,组合来自多个列的数据,创建控件,等等:

<Columns>    
<asp:TemplateField HeaderText="FirstName" SortExpression="FirstName">
        <EditItemTemplate>
            <asp:TextBox ID="TextBox1" runat="server"
                Text='<%# Bind("FirstName") %>'></asp:TextBox>
        </EditItemTemplate>
        <ItemTemplate>
            <asp:Label ID="Label1" runat="server"
                Text='<%# Bind("FirstName") %>'></asp:Label>
        </ItemTemplate>
    </asp:TemplateField>
</Columns>

https://docs.microsoft.com/en-us/aspnet/web-forms/overview/data-access/custom-formatting/using-templatefields-in-the-gridview-control-cs

【讨论】:

  • 这实际上是我需要的。我只是在您发布此内容之前才弄清楚这一点。谢谢,但如果你早点发布,我至少可以节省一天。但再次感谢。
猜你喜欢
  • 2012-10-01
  • 2013-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-03
相关资源
最近更新 更多