Как отображать элементы, только если в SQLDataSource есть строки - PullRequest
2 голосов
/ 08 октября 2010

Я создаю страницу ASP.NET/C#, где пользователь вводит идентификатор в верхней части страницы, и когда он нажимает кнопку Отправить, страница отправляется обратно и отображает данные.Прямо сейчас поля данных отображаются постоянно - даже когда страница загружается и поиск не производился.Это не идеально, поскольку, когда они перемещаются по меню с созданным мною MultiView, появляются некоторые ошибки.Кроме того, это явно не очень хорошая практика.

Есть ли способ, которым я могу скрыть все эти элементы (это DetailsView и GridView, а также MultiView и Menu), если SQLDataSource пуст?Поэтому, если поиск не дал результатов, или запрос еще не выполнен.

Спасибо

Ответы [ 3 ]

2 голосов
/ 08 октября 2010

Вы можете окружить эти элементы элементом управления заполнителем, а затем установить видимость заполнителей в зависимости от того, есть ли результат для отображения.
Я раньше не использовал объект SqlDataSource, но для удовлетворения ваших требований я бы предложил проверить, была ли страница размещена обратно в методе PageLoad и не скрывает ли она элементы управления данными. Затем, чтобы обработать случай отсутствия результатов, добавим метод к событию SqlDataSource.Selected:
ASPX:

<asp:PlaceHolder ID="myPlaceholder" runat="server">
     ....Data controlds
</asp:PlaceHolder>

Код:

protected void Page_Load(object sender, EventArgs e)
{
    if(!isPostBack)
    {     
        myPlaceholder.Visible = false;
    }
}

protected void SqlDataSource1_Selected(object sender, SqlDataSourceStatusEventArgs e)
{
    myPlaceholder.Visible = e.AffectedRows > 0;
}
1 голос
/ 04 января 2011
If GridView1.Rows.Count > 0 // then do stuff
0 голосов
/ 29 ноября 2016
DataView dv = (DataView)SqlDSourse.Select(DataSourceSelectArguments.Empty);

if(dv.count>0)

    {
     ...
    }
...