使用预填充的某些列创建gridview

时间:2018-05-06 06:18:33

标签: asp.net gridview datagridview

我正在尝试创建gridview,其中最初应该填写序列号列和第二列[PRODUCTS]数据,即在页面加载时,其他列将具有文本框。请参考图片了解网格视图结构。

然后,用户将参考第二列数据填充相应文本框上的数据。如何创建这样的网格视图?

enter image description here

1 个答案:

答案 0 :(得分:1)

以下是此类gridview的示例。您可能只需要从database添加数据的硬编码数据。如果您从database获取数据,则可以使用loop填充数据。

aspx页面

<asp:GridView ID="gvFabricDetails" runat="server" AutoGenerateColumns="False">

<Columns>
    <asp:TemplateField HeaderText="SL">
        <ItemTemplate>
            <asp:TextBox ID="txtLot" TabIndex="2" Text='<%# Bind("SL") %>' runat="server"></asp:TextBox>
        </ItemTemplate>
    </asp:TemplateField>
    <asp:TemplateField HeaderText="PRODUCTS">
        <ItemTemplate>
            <asp:TextBox ID="txtArt" TabIndex="3" Text='<%# Bind("PRODUCTS") %>' runat="server" ></asp:TextBox>
        </ItemTemplate>
    </asp:TemplateField>
    <asp:TemplateField HeaderText="Quantity">
        <ItemTemplate>
            <asp:TextBox ID="txtBalance" TabIndex="8" Text='<%# Bind("Quantity") %>' runat="server"></asp:TextBox>
        </ItemTemplate>
    </asp:TemplateField>
    <asp:TemplateField HeaderText="Producer">
        <ItemTemplate>
            <asp:TextBox ID="txtQTY" TabIndex="9" Text='<%# Bind("Producer") %>' runat="server" ></asp:TextBox>
        </ItemTemplate>
    </asp:TemplateField>
</Columns>

以下是将row添加到gridview

的方法
private void FirstGridViewRow()
    {
        DataTable dt = new DataTable();
        DataRow dr = null;
        DataRow dr1 = null;
        DataRow dr2 = null;
        DataRow dr3 = null;
        DataRow dr4 = null;

        dt.Columns.Add(new DataColumn("SL", typeof(int)));
        dt.Columns.Add(new DataColumn("PRODUCTS", typeof(string)));
        dt.Columns.Add(new DataColumn("Quantity", typeof(string)));
        dt.Columns.Add(new DataColumn("Producer", typeof(string)));

        dr = dt.NewRow();
        dr1 = dt.NewRow();
        dr2 = dt.NewRow();
        dr3 = dt.NewRow();
        dr4 = dt.NewRow();

        dr["SL"] = 1;
        dr["PRODUCTS"] = "A";
        dr["Quantity"] = string.Empty;
        dr["Producer"] = string.Empty;

        dr1["SL"] = 2;
        dr1["PRODUCTS"] = "B";
        dr1["Quantity"] = string.Empty;
        dr1["Producer"] = string.Empty;

        dr2["SL"] = 3;
        dr2["PRODUCTS"] = "C";
        dr2["Quantity"] = string.Empty;
        dr2["Producer"] = string.Empty;

        dr3["SL"] = 4;
        dr3["PRODUCTS"] = "D";
        dr3["Quantity"] = string.Empty;
        dr3["Producer"] = string.Empty;

        dr4["SL"] = 5;
        dr4["PRODUCTS"] = "E";
        dr4["Quantity"] = string.Empty;
        dr4["Producer"] = string.Empty;

        dt.Rows.Add(dr);
        dt.Rows.Add(dr1);
        dt.Rows.Add(dr2);
        dt.Rows.Add(dr3);
        dt.Rows.Add(dr4);
        //ViewState["CurrentTable"] = dt;  if you want to get previous state keep it in viewstate

        gvFabricDetails.DataSource = dt;
        gvFabricDetails.DataBind();
    }

现在您可以在Page_Load事件

中调用该方法
if (!Page.IsPostBack)
        {
            FirstGridViewRow();
        }