2014-01-08 5 views
-1

У меня проблема. Я не могу найти никакой возможности добавить новую строку в gridview, только для удаления, выбора или редактирования.Добавление новой строки в ASP.NET GridView

Google выбрасывает много примеров, но все примеры в конечном итоге с той же ошибкой для меня:

Оба DataSource и DataSourceID определены на «GridView1». Удалите одно определение.

Поскольку у меня есть GridView, заполненный из базы данных на странице Load, к нему уже привязан DataSource (SQLDataSource).

Если я пытаюсь добавить новую строку в соответствии с этим Тута: http://www.vkinfotek.com/gridview/gridview-footertemplate.html или это: http://matifnadeem.blogspot.com/2013/05/adding-dynamic-rows-in-aspnet-gridview.html или это: http://www.codeproject.com/Articles/467788/Dynamically-adding-and-deleting-rows-from-ASP-NET

я получаю ошибки, так как все учебники использовать пустой GridView, без каких-либо данных о загрузке ,

Этот пользователь здесь задал тот же вопрос: New row in ASP.NET GridView Control, но последнее звено, которое выглядит многообещающим, больше не действует .. ответ Шань выглядит слишком хорошо, но его не достаточно для меня :(

+0

где ваш код показывает, что вы делаете? – Liam

+0

Поскольку я использую тот же код, что и в связанных учебниках, я думаю, что дублирование кода не поможет. Но я могу скопировать и вставить его из учебников, если вы думаете, что это поможет. Проблема в том, что их код работает нормально, поэтому я не пытаюсь исправить их код.Проблема в том, что я использую DataSourceID при создании GridView, а затем пытаюсь использовать DataSource при запуске страницы. – SubjectX

+0

@SubjectX Если вы тогда, то почему ошибка? Посмотрите, будет ли лучше, если все элементы, связанные с этим контекстом, доступны здесь, вместо того, чтобы идти в четыре учебника, угадывая, какой из них вы реализовали и где это пошло не так. Лучше, если мы сможем увидеть, что ваша проблема. Это поможет вам после и людям будет легко найти реальную проблему. –

ответ

0

Наименьшее хлопот вариант для моей проблемы я нашел это: http://www.youtube.com/watch?v=vZIOI136IKY

Короче говоря: добавление элементов управления в сноске GridView, а затем добавить код фона:

protected void lbInsert_Click(object sender, EventArgs e) 
    { 
     SqlDataSource1.InsertParameters["Name"].DefaultValue = ((TextBox)GridView1.FooterRow.FindControl("tbName")).Text; 
     SqlDataSource1.InsertParameters["Description"].DefaultValue = ((TextBox)GridView1.FooterRow.FindControl("tbdesc")).Text; 
     SqlDataSource1.InsertParameters["Location"].DefaultValue = ((TextBox)GridView1.FooterRow.FindControl("tbLoc")).Text; 
     SqlDataSource1.InsertParameters["URL"].DefaultValue = ((TextBox)GridView1.FooterRow.FindControl("tbURL")).Text; 
     SqlDataSource1.InsertParameters["EnteredUser"].DefaultValue = ((TextBox)GridView1.FooterRow.FindControl("tbUser")).Text; 

     SqlDataSource1.Insert(); 
    } 

и, наконец, вызывая событие OnClick в веб-страница:

<FooterTemplate> 
    <asp:LinkButton OnClick="lbInsert_Click" ID="lbInsert" runat="server">Insert</asp:LinkButton> 
</FooterTemplate> 

Для получения дополнительной информации смотрите видеоролик youtube, парень объясняет, что это действительно хорошо!

0

Это требует от вас сделайте именно это. Кажется, вы установили оба свойства DataSourceID и DataSource в GridView 1. Удалите один из них. DataSourceID имеет тенденцию быть установлен в декларативной разметке, и DataSource имеет тенденцию быть установленным в codebehind. Поскольку вы используете SqlDataSource, удалите любые строки, которые явно задали свойство DataSource в коде.

// Create SQLDataSource. 
SqlDataSource sqlDataSource = new SqlDataSource(); 
sqlDataSource.ID = "SqlDataSource123"; 

//Bind SQLDataSource to GridView 
    GridView1.DataSource = sqlDataSource; 
    GridView1.DataBind(); 
+0

Хм, как бы GridView и DB обновили бы себя, если я удалю GridView1.DataSource = dt; GridView1.DataBind(); вызовы, так как новые данные находятся в dt? – SubjectX

+1

@SubjectX Многое зависит от того, как вы реализовали свой «GridView», по вашему комментарию, я думаю, вы можете удалить свойство DataSourceID на странице aspx. –

0

Это может быть потому, что вы определили два Datasource для GridView

один в страницу источника как

DataSourceID="SqlDataSource" 

, а другой в CodeBehind

GridView.DataSource= //Your Datasource 

Используйте только один DataSource и последующие учебники снова.

-hope это помогает.

+0

Означает ли это, что я не могу использовать функциональность опции «Выбор источника данных» GridView непосредственно на элементе управления? – SubjectX

+0

@SubjectX Да, тогда вы можете использовать только этот 'DataSource' для своего Gridview. –

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