Ответ: можно. Для этого надо сразу же наплевать на EmptyDataTemplate, эту залипуху для ленивых программистов и преписать класс GridView. Как вариант
- имплементируй "пустое" чтение, т.е. код в случае, если таблица пуста и грид рискует остаться пустым с одной ячейкой, как тыговоришь
using (PsqlCommand com1 = new PsqlCommand())
{
com1.Connection = con1;
com1.CommandText = SqlClause;
con1.Open();
using (PsqlDataReader reader = com1.ExecuteReader(CommandBehavior.SchemaOnly))
{//здесь читаешь толко метаданные
dt.Load(reader); for (int k = 1; k < dt.Columns.Count; k++) dt.Columns[k].AllowDBNull = true;
//Find nearest string field
object o = new object();
MakeEmptyTableHelper(dt.Columns[0].DataType.Name, ref o);
//add empty Row or Rows
for (int k = 0; k < EmptyTableRowsCount; k++)
dt.Rows.Add(o);
reader.Close();
}
}
dt.TableName = "Empty";
return dt;
Результатом будет пустая таблица, к которой можно байндить грид.
Про хелпер:
private void MakeEmptyTableHelper(string dataTypeName, ref object o)
{
switch (dataTypeName)
{
case "Int32":
case "Int64":
o = 0;
break;
case "String":
o = " ";
break;
case "DateTime":
o = DateTime.Now;
break;
case "Boolean":
o = false;
break;
default:
o = 0;
break;
}
}
Что-то в таком духе.
Ясность языка - результат ясного мышления.
(Кажется Ф. Бэкон, но тут ясности нет)
Данное сообщение получено с сайта GotDotNet.RU
Последний раз редактировалось 08 August 2008 16:19
|