向ASP.NET GridView添加新行

时间:2014-01-08 10:50:48

标签: c# asp.net gridview

我有问题。我找不到任何向gridview添加新行的选项,只能删除,选择或编辑。

谷歌抛出了很多例子,但所有例子对我来说都是同样的错误:

  

DataSource和DataSourceID都在'GridView1'上定义。去掉   一个定义。

由于我在PageLoad上从数据库填充了GridView,因此已经有DataSource绑定到它(SQLDataSource)。

如果我尝试根据此tut添加新行:       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但是最后一个看起来很有希望的链接已经不再有效了.Shan的答案看起来也不错,但对我来说还不够:(

3 个答案:

答案 0 :(得分:0)

它要求你做到这一点。您似乎已在GridView1上设置了DataSourceID和DataSource属性。删除其中一个。 DataSourceID倾向于在声明性标记中设置,并且DataSource倾向于在代码隐藏中设置。因为您正在使用SqlDataSource,所以删除在代码隐藏中显式设置DataSource属性的所有行。

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

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

答案 1 :(得分:0)

可能是因为您为Datasource

定义了两个GridView

页面来源中的一个像

DataSourceID="SqlDataSource"

和codeBehind中的另一个

GridView.DataSource= //Your Datasource

只使用一个DataSource并再次关注教程。

- 希望它有所帮助。

答案 2 :(得分: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视频,家伙解释说它真的很棒!