работать с сеткой - PullRequest
       4

работать с сеткой

0 голосов
/ 12 августа 2011
<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 равный идентификатор (пример 23) я хочу показать имя (23 = alen)

Как мне достичь всего этого?

Редактировать

ответ @naveen правильный.

Я хочу, когда пользователь нажимает на строку, показывать тело полностью заполненным ????

Ответы [ 2 ]

3 голосов
/ 12 августа 2011

Попробуйте это.

Разметка

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

Надеюсь, это поможет.

0 голосов
/ 12 августа 2011

Прежде всего, если вы хотите показать имя отправителя, а не ID, вам нужно изменить запрос, чтобы присоединиться к таблице, содержащей имя

Для выпуска даты вы можете использовать Формат (Дата, "дд / мм / гггг")

Можете ли вы убедиться, что ваш запрос возвращает все символы перед привязкой к сетке?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...