Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / ASP.NET Новый топик    Ответить
 Пустой Grid View. Как?  [new]
mabanza
ANM Member

Откуда: AspNetMania.Com
Сообщений: N/A
Привет.

Хочу отображать гридвью в случае, когда возвращен пустой резалтсет. Темплейт для пустых данных не подходит - набор полей заранее не определен.

Типа, считываю метаданные ридером, байндю, GridView пустой. Пока не добавишь 1 row. Как только искусственно добавляю ячейку, вся шапка появляется и все замечательно. Но добавление несуществующего значения (хоть и пробела для строкового поля) мне не нравится.

Есть способы получше?

Спсб.
P.S. Щас пошарил на этом форуме - аналогичные вопросы есть. Но без ответов. Це плохо. И всеж-ки, помогите.


Данное сообщение получено с AspNetMania.Com
13 апр 07, 17:24    [4019710]     Ответить | Цитировать Сообщить модератору
 Пустой Grid View. Как?  [new]
GF
GDN Member

Откуда: GotDotNet.Ru
Сообщений: N/A
А что значит набор полей заранее не определен, что один раз может прийти объект с 3 полями, а другой раз с 10 ?

Данное сообщение получено с GotDotNet.Ru
13 апр 07, 17:38    [4019787]     Ответить | Цитировать Сообщить модератору
 Пустой Grid View. Как?  [new]
Renziglov
GDN Member

Откуда: GotDotNet.Ru
Сообщений: N/A
Точно. И запросы могут быть разные, а ГридВью создается динамически.

Данное сообщение получено с GotDotNet.Ru
13 апр 07, 17:40    [4019815]     Ответить | Цитировать Сообщить модератору
 Пустой Grid View. Как?  [new]
GF
GDN Member

Откуда: GotDotNet.Ru
Сообщений: N/A
хм..Футер и Хедер не хотят генерится когда нет данных.Наверно идея с пустым значением все таки лучше, чем написание нового контрола :)

Данное сообщение получено с GotDotNet.Ru
13 апр 07, 17:49    [4019878]     Ответить | Цитировать Сообщить модератору
 Пустой Grid View. Как?  [new]
Renziglov
GDN Member

Откуда: GotDotNet.Ru
Сообщений: N/A
Пустое поле, в принципе, не проблема. Но что делать, если возвращаются только даты. Пробел не впишешь, число тоже. Будет отображаться какая-то несуществуюшая дата. Что можно придумать для дат?

Данное сообщение получено с GotDotNet.Ru
13 апр 07, 18:04    [4019963]     Ответить | Цитировать Сообщить модератору
 Пустой Grid View. Как?  [new]
GF
GDN Member

Откуда: GotDotNet.Ru
Сообщений: N/A
Насколько я понимаю нужено что то вроде EmptyDataTemplate с Footer и Header?
Тогда в принципе не важно что возврает ваш ьизнечч объект просто проверяете на null, а потом в datasource пустую строку.

Данное сообщение получено с GotDotNet.Ru
13 апр 07, 18:15    [4020006]     Ответить | Цитировать Сообщить модератору
 Пустой Grid View. Как?  [new]
Renziglov
GDN Member

Откуда: GotDotNet.Ru
Сообщений: N/A
Дык я так и делаю. Вот код:
public /*static*/ DataTable MakeEmptyTable(string SqlClause)
{
DataTable dt = new DataTable();
using (PsqlConnection con1 = new PsqlConnection(ConnectionString()))
using (PsqlCommand com1 = new PsqlCommand())
{
com1.Connection = con1;
com1.CommandText = SqlClause;

con1.Open();
using (PsqlDataReader reader =com1.ExecuteReader(CommandBehavior.SchemaOnly))
{
dt.Load(reader);
//Find nearest string field
object o = new object();
switch (dt.Columns[0].DataType.Name)
{
case "Int32":
case "Int64":
o = 0;
break;
case "String":
o = " ";
break;
case "DateTime":
o = DateTime.Now;
break;
default:
o = 0;
break;
}
dt.Rows.Add(o);

//dt.Rows.Add((new Object[] { "", "", "" }));

reader.Close();
}
}

return dt;
}

 и привязка:
da1.Fill(ds, "Temp");
gr.DataSource = ds;
gr.DataBind();
result= ds.Tables[0].Rows.Count;

if (result == 0)
{
gr.DataSource = MakeEmptyTable(SqlClause);
gr.DataBind();
//gr.Rows[0].Cells[0].Visible = false;
result = 1;
}

Как здесь избежать добавления поля (не строки)?

Данное сообщение получено с GotDotNet.Ru
13 апр 07, 18:40    [4020108]     Ответить | Цитировать Сообщить модератору
 Пустой Grid View. Как?  [new]
GF
GDN Member

Откуда: GotDotNet.Ru
Сообщений: N/A
попробуй вот так
da1.Fill(ds, "Temp");
result= ds.Tables[0].Rows.Count;
if(result != 0)
{
gr.DataSource = ds;
gr.DataBind();
}
else
{
gr.DataSource = new ArrayList(new string[] { "" });
gr.DataBind();
}

Данное сообщение получено с GotDotNet.Ru
13 апр 07, 19:10    [4020216]     Ответить | Цитировать Сообщить модератору
 Пустой Grid View. Как?  [new]
Renziglov
GDN Member

Откуда: GotDotNet.Ru
Сообщений: N/A
Спасибо. Не то. Отображается только одна колонка с именем Item.
Без запроса схемы, наверное, не обойтись.

Данное сообщение получено с GotDotNet.Ru
13 апр 07, 19:46    [4020312]     Ответить | Цитировать Сообщить модератору
 Пустой Grid View. Как?  [new]
GF
GDN Member

Откуда: GotDotNet.Ru
Сообщений: N/A
Добавь еще пару пустых строчек

Данное сообщение получено с GotDotNet.Ru
13 апр 07, 19:48    [4020314]     Ответить | Цитировать Сообщить модератору
 Пустой Grid View. Как?  [new]
Renziglov
GDN Member

Откуда: GotDotNet.Ru
Сообщений: N/A
 А то не добавил что-ли?

Данное сообщение получено с GotDotNet.Ru
13 апр 07, 19:51    [4020324]     Ответить | Цитировать Сообщить модератору
Все форумы / ASP.NET Ответить