我可以在数据绑定后更新gridview列的内容吗? SQL列是一个全名,我需要将它显示为姓氏,名字,而不是名字姓氏,就像现在一样。我知道我可以在sql中执行此操作,但似乎它会有点痛苦(SQL: parse the first, middle and last name from a fullname field)。我只是想知道是否有更简单的方法来做到这一点。
由于
好的,我想通了......抱歉。如果其他人需要这个,我添加了一个OnRowDataBound="MailingList_RowDataBound"
事件,在该事件处理程序中,我将使用以下代码(修改为解析名称):
public void MailingList_RowDataBound(object sender, GridViewRowEventArgs e)
{
// Required to ignore the header/footer.
if (e.Row.RowType == DataControlRowType.DataRow)
{
//Get the Person's Name
string name = e.Row.Cells[0].Text;
//Add your JavaScript onClick event link.
e.Row.Attributes.Add("onClick", "LookupEmail('" + name + "')");
e.Row.Cells[0].Text = "Test";
}
}
将“测试”更改为正确的值。
答案 0 :(得分:2)
<asp:TemplateField HeaderText="Name">
<ItemTemplate>
<span>
<%# Eval("FullName").Split(' ')[0]%>
</span>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Surname">
<ItemTemplate>
<span>
<%# Eval("FullName").Split(' ')[1]%>
</span>
</ItemTemplate>
</asp:TemplateField>
这应该可以解决您的问题。假设数据库中的列名为FullName
,并且第一个名称和姓氏与空格分隔,您可以拆分这些名称并将每个值绑定到GridView
中的不同列。
答案 1 :(得分:2)
使用itemtemplate
<asp:GridView ID="tset" runat="server">
<Columns>
<asp:TemplateField HeaderText="Name">
<ItemTemplate>
<asp:Label ID="label1" runat="server" Text='<%#GetFormattedName(Eval("full_name")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
并在代码后面编写GetFormattedName方法以返回一个你想要的字符串,
protected string GetFormattedName(string fullName)
{
// you can split full name here and swap first name, last name
// depending on how you store it in DB
}