使用“网格视图”
我通过包含 91 种不同字体名称的数据集填充了 gridview(不是 datagridview)。
Gridview 有两列。
第 0 列的所有 91 行中都有文本“TEST TEXT”。
第 1 列包含字体名称。
当 gridview 加载时,我希望使用 col1 中的字体显示 col 0 中的“测试文本”
我已经通过单步执行代码验证了数据集具有正确的字体,并且可以看到 col2 中的名称
我没有成功使用此代码更改字体。
For Each ros As GridViewRow In GVfonts.Rows
fontnameis = Replace(GVfonts.Rows(I).Cells(1).Text, ".otf", "")
GVfonts.RowStyle.Font.Name = (fontnameis)
GVfonts.Rows(I).Cells(0).Text = "Sample Text"
GVfonts.Rows(I).Cells(0).Width = 150
GVfonts.Rows(I).Height = 40
GVfonts.Rows(I).Cells(0).Font.Size = 12
I = I + 1
下一个
任何帮助将不胜感激
谢谢你
使用新信息进行编辑
<div>
<asp:GridView ID="GridView1" runat="server" datakeys="ID" AutoGenerateColumns="false" CssClass="table table-hover" Width="30%">
<Columns>
<asp:TemplateField HeaderText="Text">
<ItemTemplate>
<asp:Label ID="lblText" runat="server" Text='<%# Eval("TestText") %>' Font-Size="14" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Font">
<ItemTemplate>
<asp:Label ID="lblFont" runat="server" Text='<%# Eval("Font") %>' Font-Size="14" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</div>
If Not IsPostBack Then
Dim DSFONTS As DataSet = GetDS("Select 'TestText' as TestText, fontname as font from fonts order by fontname")
GridView1.DataSource = DSFONTS
GridView1.DataBind()
End If
' Grabfonts()
结束子
Protected Sub GridView1_RowDataBound(sender As Object, e As GridViewRowEventArgs) 处理 GridView1.RowDataBound 如果 e.Row.RowType = DataControlRowType.DataRow 那么
Dim lblFont As Label = e.Row.FindControl("lblFont")
Dim lblText As Label = e.Row.FindControl("lblText")
lblText.Style.Add("font-family", $"'{lblFont.Text}'")
End If
结束子
我对你的代码唯一改变的是字体大小。我验证了我的数据集已正确填充。似乎找不到我错过了什么
作为一般规则,为了格式化网格视图的行,首选事件是使用行数据绑定事件。那么,比如设置控件的颜色、行计算或其他什么?行数据绑定事件相当不错,因为它还可以使用数据源中的所有列,甚至可以自由使用不在 GridView 标记中的列。因此,您可以有一些列设置给定行的颜色,但您不必在 GridView 标记中显示或包含该列。
所以,假设这个数据表:
身份证 | 测试文本 | 字体 |
---|---|---|
1 | 测试文本 | Arial 黑色 |
2 | 测试文本 | 卡利布里 |
3 | 测试文本 | 快递新 |
4 | 测试文本 | 9 件免费 3 件 |
5 | 测试文本 | 吉吉 |
6 | 测试文本 | 非正式罗马语 |
7 | 测试文本 | OCR A 扩展版 |
8 | 测试文本 | 宋体 |
所以,我们的 GridView 标记:
<asp:GridView ID="GridView1" runat="server"
datakeys="ID" AutoGenerateColumns="false"
CssClass="table table-hover" Width="30%">
<Columns>
<asp:TemplateField HeaderText="Text">
<ItemTemplate>
<asp:Label ID="lblText" runat="server"
Text='<%# Eval("TestText") %>'
Font-Size="16" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Font">
<ItemTemplate>
<asp:Label ID="lblFont" runat="server"
Text='<%# Eval("Font") %>'
Font-Size="16" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
加载 GridView 的代码如下:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not IsPostBack Then
Dim strSQL =
"SELECT * FROM tblFontFun
ORDER BY ID"
GridView1.DataSource = MyRst(strSQL)
GridView1.DataBind()
End If
End Sub
Protected Sub GridView1_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GridView1.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then
Dim lblFont As Label = e.Row.FindControl("lblFont")
Dim lblText As Label = e.Row.FindControl("lblText")
lblText.Style.Add("font-family", $"'{lblFont.Text}'")
End If
End Sub
结果是这样的:
当然,另一个问题是此类字体很可能无法在客户端计算机上安装和使用。因此,您需要确保加载此类字体。
假设我到处寻找并找到了一种“计算器”字体。
所以,我现在可以在我的字体文件夹中添加以下字体:
好的,现在在该页面上,我需要包含该字体。
因此,我有这个:
<title></title>
<link href="../Content/bootstrap.css" rel="stylesheet" />
<script src="../Scripts/jquery-3.6.4.js"></script>
<script src="../Scripts/bootstrap.js"></script>
<style type="text/css">
@font-face
{
font-family: 'myCalculator';
src: url('../fonts/Calculator.ttf');
}
</style>
所以,现在在标记中,我可以得到这个:
<asp:Label ID="lblTime" runat="server" Text="123456789"
style="font-size:32px;font-family:myCalculator;
font-weight:bold;color:red;
border-style:solid;
border-color:black;padding:4px"
>
</asp:Label>
现在的结果是这样的: