2012-03-06 15 views
1

データバインド後にグリッドビューの列の内容を更新できますか? SQLの列はフルネームで、姓、名、姓の順で表示する必要があります。私はSQLでこれを行うことができますが、それは痛み(SQL: parse the first, middle and last name from a fullname field)のようなものになるだろうと思われる。私はちょうどこれを行う簡単な方法があるのだろうかと思っていた。 [OK]をデータバインド後にGridViewの列を更新しますか?

おかげ

は、私は申し訳ありません...それを考え出しました。イベントでは他の誰かがこれを必要とする、私は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
<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の異なる列にバインドすることができます。

+0

あなたはまだあなたはまだやることができますつの列にあるように名前を希望している場合( '')[0]%> '%' Eval( "FullName")を使用すると、 – JCherryhomes

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 
    } 
関連する問題