Hi,
I have a gridview which gets populated by calling BLL method . My BLL returns Datatable and am binding it to the gridview.Now i want to add new row.For that i have written aspx as below:
<
asp:GridView ID="gvSubContractor" runat="server" AutoGenerateColumns="False" EmptyDataText="No Data"Width="959px" ShowFooter="false" OnRowCreated="gvSubContractor_RowCreated" onrowcommand="gvSubContractor_RowCommand"> <RowStyle CssClass="ItemStyle" /> <Columns> <asp:TemplateField HeaderText="ContractorName" > <FooterTemplate>Enter Contractor Name:
<asp:TextBox runat="server" ID="InsertContractorName" Text='<%# Bind("ContractorName") %>' /> </FooterTemplate> <EditItemTemplate> <asp:TextBox ID="txtContractorName" runat="server" Text='<%# Bind("ContractorName") %>'></asp:TextBox> </EditItemTemplate> <ItemTemplate><%# Eval("ContractorName")%> </ItemTemplate> <FooterTemplate> <asp:Button runat="server" ID="Insert" Text="Add SubContractor" CommandName="InsertNew" /> </FooterTemplate> </asp:TemplateField> <asp:BoundField DataField="ContractorPIName" HeaderText="PI Name" /> <asp:BoundField DataField="ContractorPIEmail" HeaderText="PI Email" /> <asp:BoundField DataField="ContractorPIPhone" HeaderText="PI Phone" /> <asp:CommandField ShowEditButton="True" /> <asp:CommandField ShowDeleteButton="True" /></Columns> <EmptyDataTemplate>
Contractor Name:
<asp:TextBox runat="server" ID="NoContractorName" /> <asp:Button runat="server" ID="NoDataInsert" CommandName="NoDataInsert" Text="Insert" /> </EmptyDataTemplate><HeaderStyle CssClass="HeaderStyle" /> <AlternatingRowStyle CssClass="AlternatingStyle" /> </asp:GridView>
Now on click of Add button am writing the below code: At present it just adds empty row.
protected void btnAddSubContractor_Click(object sender, EventArgs e){
int TaskOrderID = 3; DataTable dt = TaskOrderManager.GetTaskOrderContractor(TaskOrderID);dt = (DataTable)gvSubContractor.DataSource; DataRow dr = dt.NewRow(); //make headertemplate visible to editgvSubContractor.ShowFooter =
true; // dr["ContractorName"] = ContractorName.Text; //dr["ContractorName"]= txtCName.Text ;dt.Rows.Add(dr);
gvSubContractor.DataSource = dt;
gvSubContractor.DataBind();
}
But i want to add row without using sqldatasource or objectdatasource control.Please tell me how can i add it?
![]() |
0 |
![]() |
Setty:
But i want to add row without using sqldatasource or objectdatasource control.Please tell me how can i add it?Here's an example on how to add rows in GridView without using those wizard datasources..
ASPX:
<asp:TextBox ID="TextBox1" runat="server"/>
<asp:TextBox ID="TextBox2" runat="server"/>
<asp:TextBox ID="TextBox3" runat="server"/>
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
<asp:GridView ID="GridView1" runat="server" >
</asp:GridView>CODE BEHIND:
//A method that will BIND the GridView based on the TextBox
//values and retain its values on post backs.
private void BindGrid(int rowcount)
{
DataTable dt = new DataTable();
DataRow dr;
dt.Columns.Add(new System.Data.DataColumn("TextBox1Column", typeof(String)));
dt.Columns.Add(new System.Data.DataColumn("TextBox2Column", typeof(String)));
dt.Columns.Add(new System.Data.DataColumn("TextBox3Column", typeof(String)));
if (ViewState["CurrentData"] != null)
{
for (int i = 0; i < rowcount + 1; i++)
{
dt = (DataTable)ViewState["CurrentData"];
if (dt.Rows.Count > 0)
{
dr = dt.NewRow();
dr[0] = dt.Rows[0][0].ToString();
}
}
dr = dt.NewRow();
dr[0] = TextBox1.Text;
dr[1] = TextBox2.Text;
dr[2] = TextBox3.Text;
dt.Rows.Add(dr);
}
else
{
dr = dt.NewRow();
dr[0] = TextBox1.Text;
dr[1] = TextBox2.Text;
dr[2] = TextBox3.Text;
dt.Rows.Add(dr);
}
// If ViewState has a data then use the value as the DataSource
if (ViewState["CurrentData"] != null)
{
GridView1.DataSource = (DataTable)ViewState["CurrentData"];
GridView1.DataBind();
}
else
{
// Bind GridView with the initial data assocaited in the DataTable
GridView1.DataSource = dt;
GridView1.DataBind();
}
// Store the DataTable in ViewState to retain the values
ViewState["CurrentData"] = dt;
}
protected void Button1_Click(object sender, EventArgs e)
{
// Check if the ViewState has a data assoiciated within it. If
if (ViewState["CurrentData"] != null)
{
DataTable dt = (DataTable)ViewState["CurrentData"];
int count = dt.Rows.Count;
BindGrid(count);
}
else
{
BindGrid(1);
}
TextBox1.Text = string.Empty;
TextBox1.Focus();
}You can refer here for more information.
Adding Multiple Columns and Rows in GridView without using a Database
You might be also interested on this:
Adding Multiple Rows in GridView
Regards,Vinz
"Code, Beer and Music" that's my way of being a programmer!
How to get your Forum Question Answered | Blog | CodeASP.NET
![]() |
0 |
![]() |
Thanks and it is working great.
![]() |
0 |
![]() |