如何在没有数据字段的情况下在 gridview 中创建超链接?
how to make hyperlink in gridview without datafield?
开发语言: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
只需像这样使用 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>
开发语言: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只需像这样使用 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>