2011-08-12 102 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個字符。
  2. date內容1/1/2011我想在現場展示jul 1 2011date
  3. sender等於編號(例如23)我想顯示的名稱(23 =阿倫)

我將如何做到這一切?

編輯

答案@naveen是正確的。

我想當用戶點擊行顯示身體完整?

+0

那麼,你的問題是什麼? –

回答

3

試試這個。

標記

<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> 

代碼隱藏

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(); 
} 

希望這有助於。

+1

我想第三個他想顯示發件人的名字,而不是他們的ID。爲此,他需要修改他的選擇查詢,如Martin所說。 – Tim

+0

@Tim:謝謝你。我想現在一切都很好。 – naveen

+1

沒問題。很好的代碼示例,順便說一句。 +1 :) – Tim

0

首先,如果你想顯示發件人的名稱,而不是ID,您必須修改您的查詢中包含名稱

對於日期的問題要連接的表,你可以使用格式(Date ,「dd/mm/yyyy」)

您可以確保您的查詢在綁定到網格之前實際返回所有字符?

+0

請寫一個例子 – ashkufaraz

+1

嘿,我沒有做你的工作。我已經告訴過你該怎麼做。有用。 – Martin