如何从asp.net中的datatable填充gridview [英] how to fill gridview from datatable in asp.net

查看:70
本文介绍了如何从asp.net中的datatable填充gridview的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想从datatable填写gridview





我的gridview是

I want to fill gridview from datatable


My gridview is

<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>




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有数据,但无法填充gridview。


Datatable has data but it could not fill gridview.

推荐答案

使用gridView的GridView1_RowDataBound事件

添加以下行DataKeyNames =序列号,内部序列号,保修



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

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













 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..

        }
}


您必须为文本框指定文本值。使用以下语法



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





源代码的示例代码:





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:


<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>


这篇关于如何从asp.net中的datatable填充gridview的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆