Click here to Skip to main content
15,880,427 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
I want to fill gridview from datatable


My gridview is
ASP.NET
<asp:GridView runat="server" ID="GridView1" BackColor="White"
    BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="1px" CellPadding="3"
    HorizontalAlign="Center" AutoGenerateColumns="False">
     <FooterStyle BackColor="White" ForeColor="#000066" />
      <HeaderStyle BackColor="#006699" Font-Bold="True" ForeColor="White"
        HorizontalAlign="Center" />
    <PagerStyle BackColor="White" ForeColor="#000066" HorizontalAlign="Left" />
    <RowStyle ForeColor="#000066" HorizontalAlign="Center" />
    <SelectedRowStyle BackColor="#669999" Font-Bold="True" ForeColor="White" />
    
    <Columns>

  
        <asp:TemplateField HeaderText="Serial Number">
            <ItemTemplate>
                <asp:TextBox ID="txtSNo" runat="server" BackColor="AntiqueWhite"></asp:TextBox>
            </ItemTemplate>

        </asp:TemplateField>
        <asp:TemplateField HeaderText="Internal Serial Number">
            <ItemTemplate>

                <asp:TextBox ID="txtISNo" runat="server" BackColor="AntiqueWhite"></asp:TextBox>

            </ItemTemplate>
         </asp:TemplateField>
        <asp:TemplateField HeaderText="Waranty">
            <ItemTemplate>

                <asp:TextBox ID="txtWaranty" runat="server" BackColor="AntiqueWhite"></asp:TextBox>

            </ItemTemplate>

        </asp:TemplateField>
        <asp:TemplateField HeaderText="Start">

            <ItemTemplate>

                <asp:TextBox ID="txtWStart" runat="server"
                 BackColor="AntiqueWhite"></asp:TextBox>

            </ItemTemplate>

        </asp:TemplateField>

        <asp:TemplateField HeaderText="End">

            <ItemTemplate>

                 <asp:TextBox ID="txtWEnd" runat="server" BackColor="AntiqueWhite">
                 </asp:TextBox>

            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Status">
            <ItemTemplate>
                 <asp:TextBox ID="txtStatus" runat="server" BackColor="AntiqueWhite"></asp:TextBox>
            </ItemTemplate>        

        </asp:TemplateField>
        

        </Columns>
   </asp:GridView>

C#
internal void CreateGrid(int rows,string invoice)
       {
           dt = new DataTable();
           dt.Columns.Add(new DataColumn("Serial Number", typeof(string)));
           dt.Columns.Add(new DataColumn("Internal Serial Number", typeof(string)));
           dt.Columns.Add(new DataColumn("Waranty", typeof(string)));
           dt.Columns.Add(new DataColumn("Start", typeof(string)));
           dt.Columns.Add(new DataColumn("End", typeof(string)));
           dt.Columns.Add(new DataColumn("Status", typeof(string)));
           using (cmd = new SqlCommand("sp_IPurchaseDetail", con))
           {
               cmd.CommandType = CommandType.StoredProcedure;
               cmd.Parameters.Add(new SqlParameter("@InvoiceNumber", invoice));
               cmd.Parameters.Add(new SqlParameter("@ItemCode", ""));
               cmd.Parameters.Add(new SqlParameter("@SubItemCode", ""));
               cmd.Parameters.Add(new SqlParameter("@SerialNumber", ""));
               cmd.Parameters.Add(new SqlParameter("@ISerialNumber",""));
               cmd.Parameters.Add(new SqlParameter("@Waranty", ""));
               cmd.Parameters.Add(new SqlParameter("@WarantyStartDate", ""));
               cmd.Parameters.Add(new SqlParameter("@WarantyEndDate", ""));
               cmd.Parameters.Add(new SqlParameter("@Status", ""));
               cmd.Parameters.Add(new SqlParameter("@Issued", ""));
               cmd.Parameters.Add(new SqlParameter("@StockIn",""));

               cmd.Parameters.Add(new SqlParameter("@Mode", "S"));
               if (con.State == ConnectionState.Closed)
                   con.Open();
               da = new SqlDataAdapter(cmd);
               ds = new DataSet();
               da.Fill(ds);
               if (ds.Tables[0].Rows.Count > 0)
               {
                   GridView1.AutoGenerateColumns = false;
                   for (int i = 0; i < NoOfRows; i++)
                   {
                       dr = dt.NewRow();
                       string gh = ds.Tables[0].Rows[i][3].ToString();
                       dr["Serial Number"] = ds.Tables[0].Rows[i][4].ToString();
                       dr["Internal Serial Number"] = ds.Tables[0].Rows[i][5].ToString();
                       dr["Waranty"] = ds.Tables[0].Rows[i][6].ToString();
                       dr["Start"] = ds.Tables[0].Rows[i][7].ToString();
                       dr["End"] = ds.Tables[0].Rows[i][8].ToString();
                       dr["Status"] = ds.Tables[0].Rows[i][9].ToString();
                       dt.Rows.Add(dr);

                   }

                 //  ViewState["CurrentTable"] = dt;

                   GridView1.DataSource = dt;
                   GridView1.DataBind();

               }

           }
           GridView1.Visible = true;
       }

Datatable has data but it could not fill gridview.
Posted
Updated 17-Dec-13 0:47am
v2

use GridView1_RowDataBound event of gridView
Add Following Line DataKeyNames="Serial Number,Internal Serial Number,Waranty"

ASP.NET
<asp:gridview runat="server" id="GridView1" backcolor="White" xmlns:asp="#unknown">DataKeyNames="Serial Number,Internal Serial Number,Waranty"></asp:gridview>




C#
 protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
         TextBox txtvalue; 
         if (e.Row.RowType == DataControlRowType.DataRow)
        {
             txtvalue = (TextBox)e.Row.FindControl("txtSNo");
             txtvalue.Text=GridView1.DataKeys[e.Row.RowIndex]["txtSNo"].ToString();
            
            //Same for others..

        }
}
 
Share this answer
 
You have to assign a Text Value to the textbox. by using the following syntax

Text='<%# Eval("Column Name") %>'


Sample code for your source code:


XML
<asp:TemplateField HeaderText="Serial Number">
                <ItemTemplate>
                    <asp:TextBox ID="txtSNo" runat="server" Text='<%# Eval("Serial Number") %>' BackColor="AntiqueWhite"></asp:TextBox>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Internal Serial Number">
                <ItemTemplate>
                    <asp:TextBox ID="txtISNo" runat="server" Text='<%# Eval("Internal Serial Number") %>' BackColor="AntiqueWhite"></asp:TextBox>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Waranty">
                <ItemTemplate>
                    <asp:TextBox ID="txtWaranty" runat="server" Text='<%# Eval("Waranty") %>' BackColor="AntiqueWhite"></asp:TextBox>
                </ItemTemplate>
            </asp:TemplateField>
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900