2011-08-12 10 views
0
<asp:GridView ID="gridInboxMessage" runat="server" 
      AutoGenerateColumns="False" 
      DataSourceID="LinqDataSource1"> 
    <Columns> 
     <asp:BoundField DataField="Title" HeaderText="title" ReadOnly="True" SortExpression="Title" /> 
     <asp:BoundField DataField="Body" HeaderText="body" ReadOnly="True" SortExpression="Body" /> 
     <asp:BoundField DataField="Sender" HeaderText="sender" ReadOnly="True" SortExpression="Sender" /> 
     <asp:BoundField DataField="Date1" HeaderText="date" ReadOnly="True" SortExpression="Date1" /> 
    </Columns> 
</asp:GridView> 
<asp:LinqDataSource ID="LinqDataSource1" runat="server" 
      ContextTypeName="DataClassesDataContext" 
      Select="new (Title, Body, Sender, Date1)" 
      TableName="PrivateMessages" 
      Where="Receptor == @Receptor"> 
    <WhereParameters> 
     <asp:QueryStringParameter Name="Receptor" QueryStringField="idCompany" Type="String" /> 
    </WhereParameters> 
</asp:LinqDataSource> 

LinqDataSourceからデータが読み込まれたasp:GridViewがあります。私の質問はグリッドビューでの作業

  1. 本文に含まれているボディは1000文字です。私はボディのフィールドに50文字しか表示できません(over flow hide)。
  2. フィールドdateコンテンツ1/1/2011私は(例23)私は(23 = ALEN)の名前を表示したい

どのように私はこれらすべてを実現しますjul 1 2011

  • dateフィールドのフィールド sender同じIDを表示したいですか?

    編集

    回答@naveenは正しいです。

    ユーザーが行をクリックしたときに表示したい体全体がフルですか?あなたは、送信者の名前ではなくIDを表示したい場合は、すべての

    +0

    あなたの質問は何ですか? –

    答えて

    3

    これを試してください。このことができます

    protected string TruncateText(object objBody) 
    { 
        string truncated = ""; 
        if (objBody != null) 
        { 
         truncated = objBody.ToString().Length > 50 ? 
          objBody.ToString().Substring(0, 47) + "..." : objBody.ToString(); 
        } 
        return truncated; 
    } 
    
    protected string GetSenderNameFromID(object objSenderID) 
    { 
        string senderName = ""; 
        if (objSenderID != null) 
        { 
         senderName = CallDatabaseToGetNameFromID(); 
        } 
        return senderName; 
    } 
    
    private string CallDatabaseToGetNameFromID() 
    { 
        //implement your database call to retrieve sender name from id 
        throw new NotImplementedException(); 
    } 
    

    希望の後ろ

    マークアップ

    <asp:GridView ID="gridInboxMessage" runat="server" 
          AutoGenerateColumns="False" 
          DataSourceID="LinqDataSource1"> 
        <Columns> 
         <asp:BoundField DataField="Title" HeaderText="title" ReadOnly="True" SortExpression="Title" /> 
    
         <asp:TemplateField HeaderText="Body" SortExpression="Body"> 
          <ItemTemplate> 
           <asp:Label ID="MyBody" runat="server" 
             Text='<%# TruncateText(Eval("Body"))%>'> 
           </asp:Label> 
          </ItemTemplate> 
         </asp:TemplateField> 
    
         <asp:TemplateField HeaderText="Sender"> 
          <ItemTemplate> 
           <asp:Label ID="MySender" runat="server" 
             Text='<%# GetSenderNameFromID(Eval("Sender"))%>'> 
           </asp:Label> 
          </ItemTemplate> 
         </asp:TemplateField> 
    
         <asp:TemplateField HeaderText="Date" SortExpression="Date1"> 
          <ItemTemplate> 
           <asp:Label ID="MyDate" runat="server" 
             Text='<%# DataBinder.Eval(Container.DataItem, "Date1", "{0:MMMM d yyy}")%>'> 
           </asp:Label> 
          </ItemTemplate> 
         </asp:TemplateField> 
        </Columns> 
    </asp:GridView> 
    

    コード。

    +1

    私は3番目に彼がIDではなく、送信者の名前を表示したいと思います。そのためには、マーティンが言ったように、彼は選択したクエリを変更する必要があります。 – Tim

    +0

    @Tim:ありがとう。私は今すべてがうまいと思う。 – naveen

    +1

    問題ありません。ニースのコード例、btw +1: – Tim

    0

    まず、あなたが日付の問題について名前

    を含むテーブルに参加するためにあなたのクエリを変更する必要があり、あなたは(日付書式を使用することができます、 "dd/mm/yyyy")

    グリッドにバインドする前にクエリが実際にすべての文字を返すようにすることはできますか?

    +0

    例を書いてください – ashkufaraz

    +1

    ねえ、私はあなたの仕事をしていません。私はあなたに何をすべきか教えてくれました。できます。 – Martin