数据绑定后更新GridView列?

时间:2012-03-06 23:29:33

标签: c# asp.net data-binding

我可以在数据绑定后更新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";
        }
    }

将“测试”更改为正确的值。

2 个答案:

答案 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 
    }