2014-01-08 69 views
-1

我有一个问题。我找不到任何选项将新行添加到gridview,只能删除,选择或编辑。添加新行到ASP.NET GridView的

谷歌抛出的例子很多,但所有的例子落得同样的错误我:

两个DataSource和DataSourceID的是在“GridView1”定义。删除 一个定义。

由于我在PageLoad上从数据库填充了GridView,因此已经有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

因为我在链接教程中使用相同的代码,我认为重复代码不会有帮助。但是,如果您认为这有帮助,我可以从教程中复制并粘贴它。问题是:他们的代码工作正常,所以我没有试图修复他们的代码。问题是,我在设计GridView时使用DataSourceID,然后在页面运行时尝试使用DataSource。 – 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

它需要你做到这些,你似乎已经设置上都GridView1在的DataSourceID和DataSource属性。删除其中的一个。在的DataSourceID往往在声明标记进行设置和数据源中往往隐藏代码进行设置。因为你正在使用一个SqlDataSource,删除任何明确设置代码隐藏中的DataSource属性的行。

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

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

嗯,怎么会GridView和数据库更新,然后自己,如果我删除GridView1.DataSource = DT; GridView1.DataBind();自从新数据在dt之后调用? – SubjectX

+1

@SubjectX很多取决于如何执行了你的'GridView',按照您发表评论我认为你可以删除'在你的aspx页面DataSourceID'财产。 –

0

这可能是因为你在代码隐藏

GridView.DataSource= //Your Datasource 

仅使用一个DataSource,并按照教程重新定义了两个DatasourceGridView

一个在页面的源代码一样

DataSourceID="SqlDataSource" 

和另一个。

-hope它帮助。

+0

这是否意味着我无法直接在控件上使用GridView的“选择数据源”选项的功能? – SubjectX

+0

@SubjectX是的,你可以那么你应该只为你的GridView使用'DataSource'。 –