Как получить TotalRowCount из LinqDataSource в литерал? - PullRequest
0 голосов
/ 17 ноября 2008

У меня есть LinqDataSource, который я использую для вычисления количества строк в таблице. Я хотел бы обновить значение литерала с помощью следующего номера кода, взятого из MSDN ( linqdatasourcestatuseventargs.totalrowcount.aspx ):

protected void linqDataSource1_Selected(object sender, LinqDataSourceStatusEventArgs e)
{
    Literal1.Text = e.TotalRowCount.ToString();
}

Как мне вызвать событие выбора в источнике данных? Класс SqlDataSource имеет метод Select (), так что его можно запускать программно, например, Page_Load, но у LinqDataSource нет этого метода. В настоящее время я решил эту проблему, привязав свой источник данных к пустому элементу FormView, но это слишком уродливо.

Я чувствую себя довольно уверенно, что есть намного более хороший способ получить общее число строк в моем литерале при использовании LinqToSql, я просто не знаю, как это сделать.

Предложение tvanfosson о присоединении метода к выбранному событию источника данных, к сожалению, не решает мою проблему, потому что событие select по-прежнему не срабатывает при загрузке страницы. (Кстати, я уже прикрепил метод _Selected с атрибутом OnSelected, например так)

<asp:LinqDataSource ID="linqDataSource1" runat="server"
    OnSelected="linqDataSource1_Selected">

Ответы [ 2 ]

3 голосов
/ 18 ноября 2008

Подключите ваш метод как обработчик события Selected в Page_Load.

public void Page_Load( object sender, EventArgs e )
{
     linqDataSource1.Selected += LinqDataSource1_Selected;
}

protected void LinqDataSource1_Selected(object sender, LinqDataSourceStatusEventArgs e)
{
    Literal1.Text = e.TotalRowCount.ToString();
}
0 голосов
/ 20 ноября 2008

Я закончил тем, что отбросил источник данных и вместо этого поместил код в код позади. Не то чтобы программирование по принципу «укажи и щелкни», к которому я стремился, но все еще довольно короткое. Я выгляжу примерно так:

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        var context = new MyDataContext();

        numberOfModificationsLiteral.Text =
            (
                from modification in context.Modifications
                where modification.Start >= DateTime.Now
                select modification
            ).Count().ToString();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...