Bry*_*oth 17 linq asp.net datagridview linq-to-sql
UPDATE
我基本上将查询绑定到WinForms DataGridView.我希望列标题合适,并在需要时包含空格.例如,我想要一个列标题First Name代替FirstName.
如何在LINQ中创建自己的自定义列名?
例如:
Dim query = From u In db.Users _
Select u.FirstName AS 'First Name'
Run Code Online (Sandbox Code Playgroud)
Sco*_*ols 26
正如CQ所述,您不能为字段名称提供空间,但您可以返回新列.
var query = from u in db.Users
select new
{
FirstName = u.FirstName,
LastName = u.LastName,
FullName = u.FirstName + " " + u.LastName
};
Run Code Online (Sandbox Code Playgroud)
然后你可以绑定到上面的变量查询或循环通过它无论....
foreach (var u in query)
{
// Full name will be available now
Debug.Print(u.FullName);
}
Run Code Online (Sandbox Code Playgroud)
如果要重命名列,可以,但不允许使用空格.
var query = from u in db.Users
select new
{
First = u.FirstName,
Last = u.LastName
};
Run Code Online (Sandbox Code Playgroud)
将FirstName重命名为First,LastName重命名为Last.
Sco*_*ols 14
如果要更改标题文本,可以在GridView定义中设置...
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:BoundField DataField="FirstName" HeaderText="First Name" />
</Columns>
</asp:GridView>
Run Code Online (Sandbox Code Playgroud)
在后面的代码中,您可以绑定到用户,它将标题设置为名字.
protected void Page_Load(object sender, EventArgs e)
{
// initialize db datacontext
var query = from u in db.Users
select u;
GridView1.DataSource = query;
GridView1.DataBind();
}
Run Code Online (Sandbox Code Playgroud)
Bry*_*oth 13
我解决了自己的问题,但你的所有答案都非常有帮助,并指出了我正确的方向.
在我的LINQ查询中,如果列名有多个单词,我会用下划线分隔单词:
Dim query = From u In Users _
Select First_Name = u.FirstName
Run Code Online (Sandbox Code Playgroud)
然后,在Paint方法中DataGridView,我用空格替换了标题中的所有下划线:
Private Sub DataGridView1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles DataGridView1.Paint
For Each c As DataGridViewColumn In DataGridView1.Columns
c.HeaderText = c.HeaderText.Replace("_", " ")
Next
End Sub
Run Code Online (Sandbox Code Playgroud)
小智 6
您还可以添加一个事件处理程序来替换这些下划线!
对于那些喜欢C#的人:
datagrid1.ItemDataBound +=
new DataGridItemEventHandler(datagrid1_HeaderItemDataBound);
Run Code Online (Sandbox Code Playgroud)
你的处理程序应如下所示:
private void datagrid1_HeaderItemDataBound(object sender, DataGridItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Header)
{
foreach(TableCell cell in e.Item.Cells)
cell.Text = cell.Text.Replace('_', ' ');
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
54895 次 |
| 最近记录: |