2013-04-30 1 views
4

Я использую .net 4.5, и я нашел это странное поведение:DetailsПросмотрите ошибку при связывании пустого datatable?

Markup:

<asp:DetailsView ID="dtvTest" AutoGenerateRows="true" DefaultMode="Insert" runat="server" /> 

Код:

protected void Page_Load(object sender, EventArgs e) 
{ 
    DataTable dt = new DataTable("Test"); 
    dt.Columns.Add("Column", typeof(string)); 
    // If I uncomment the line it works! 
    // dt.Rows.Add("row 1"); 
    dtvTest.DataSource = dt; 
    dtvTest.DataBind(); 
} 

результат

Коллекция не может быть пустым , Название параметра: c

выброшено на dtvTest.DataBind().

Если есть хотя бы один ряд, это работает! (см. прокомментированную строку).

Любая идея о том, как исправить/обойти его?

Большое спасибо

ответ

1

я столкнулась с тем же Prob в недавнем проекте шахты я решил его связывание пустых строк colleciton следующим образом, (кстати, я скомпилировал его в Уре решения, и она работает просто отлично)

protected void Page_Load(object sender, EventArgs e) 
    { 
     DataTable dt = new DataTable("Test"); 
     dt.Columns.Add("Column", typeof(string)); 

     // If I uncomment the line it works! 
     // dt.Rows.Add("row 1"); 

     dt.LoadDataRow(new string[1],true); 
     dtvTest.DataSource = dt; 

     dtvTest.DataBind(); 

    } 

, а также независимо от того, сколько столбцов вы добавляете, оно все еще работает.

Отношения

+0

Спасибо @King A.Majid. Это не было решением, но помогло мне. Я обновил флаг acceptChanges и вызвал отклонения изменений после привязки к подробному представлению (я не хочу пустую строку). –

+0

мое удовольствие, мы все в одном мире программирования программирования – Adam

+0

Я думаю, что я могу столкнуться с этой ошибкой, мой вопрос здесь: http://stackoverflow.com/questions/23896437/insert-into-an-empty -database-таблицы с использованием-Asp-нетто – Ben

0

Может быть, проверка строк exhistance вы просите?

if (table.Rows.Count > 0) 
    { 
    DataBind(); 
    } 

Кроме того, this может быть полезным и this решением.

+1

Детальный вид предназначен для вставки. Если я не буду называть databind, у меня не будет GUI для добавления нового элемента –

+1

Да, я знаю о DataBind. Странно, что у вас есть ошибка, если нет данных, причина в .NF 3.5 все в порядке - на странице ничего не делается, никаких исключений. –

+1

Да! Это кажется ошибкой, потому что я ожидаю такого же поведения для пустых, а не пустых таблиц ... Из .net 4 есть исключение, но оно все еще не работает должным образом –

Смежные вопросы