工作与网格视图

本文关键字:视图 网格 工作 | 更新日期: 2023-09-27 18:05:27

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

我有一个asp:GridView从一个LinqDataSource填充。我的问题是

  1. 正文包含1000个字符,我只能在正文字段显示50个字符(超过流隐藏)。
  2. 字段date内容1/1/2011我想显示jul 1 2011字段date
  3. 字段sender等于id(例23)我想显示名称(23=alen)

我将如何实现所有这些?

编辑

答案@naveen是正确的。

我想当用户点击行显示主体完整????

工作与网格视图

试试这个

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

首先,如果您想显示发件人的名称而不是ID,则必须修改查询以加入包含名称

的表。

对于日期问题,可以使用Format(date, "dd/mm/yyyy")

你能确保你的查询在绑定到网格之前返回所有的字符吗?