将新行添加到空网格,其中所有控件都在列中 [英] add new row to empty grid with all controls in column

查看:69
本文介绍了将新行添加到空网格,其中所有控件都在列中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好,我是dotnet编程的新手.我正在使用c#.根据要求,我正在设计一个项目中客户的订单.在该表单中,当您运行表单(单击订购按钮)时,将加载一个空网格,并且该网格应包含5列(S.No自动生成,项目(下拉列表),mrp(标签),数量(文本框),总计费用(标签)).输入/获取第一项详细信息后,网格必须显示带有所有控件(即下拉列表,标签,文本框等)的其他行.可能是在模板字段或页脚行中的按钮单击事件中.采集完整的整粒牛后,整个整粒牛必须保存在db中.
我已经尝试了很多次,直到显示空网格(没有conn db),所有控件全部显示&工作,即下拉列表中所选项目的mrp显示在mrp标签中.在文本框中输入数量后,总成本在tcost标签上显示.我被困于添加新行.
我已使用html进行设计:

hi all, I''m very new to dotnet programming. I''m using c#. as per requirement I''m desiging order taking form from customer in a project. In that form, when u run the form(click on order button) empty grid should load and it should contain 5 columns (S.No auto generation, item (dropdown list), mrp (label),quantity(text box), total cost(label)). after enter/taking first item details, grid must display additional row with all controls(i.e dropdown list, labels, text box etc). it may be in button click event which in template field or in footer row also. after taking complete oreder the entire oreder must save in db.
I''ve tried alot I''m succeeded upto displaying empty grid(with no conn db), relavant all controls all displaying & working.i.e.,mrp of selected item in dropdownlist displaying in mrp label. after enter quntity in textbox, total cost is diplaying at tcost label. I''m stucked at adding new row.
I''ve used html for designing:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
     <table>
     <tr>
     <td>
         <asp:Label ID="Label3" runat="server" Text="Order Id"></asp:Label></td>
         <td>
             <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox></td>
     </tr>
     </table>
    </div>
    <asp:GridView ID="grdv" ShowFooter="false" AutoGenerateColumns="False" runat="server"

            onrowdatabound="grdv_RowDataBound"

        onselectedindexchanged="grdv_SelectedIndexChanged"

              OnRowCommand="grdv_RowCommand">
        <Columns>
                <asp:TemplateField HeaderText="SNO">
                <ItemTemplate>
                <%#Container.DataItemIndex + 1 %>
                </ItemTemplate>
                <%--</asp:TemplateField>
                <asp:TemplateField HeaderText="orderid">
                <ItemTemplate>
                <asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
                </ItemTemplate>--%>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="item">
                <ItemTemplate>
                <asp:DropDownList DataSource='<%# item() %>' DataTextField="itemname" DataValueField="itemname" ID="DropDownList1" runat="server" OnSelectedIndexChanged="dlist_SelectedIndexChanged" AutoPostBack="true"></asp:DropDownList>
                </ItemTemplate>
                <%--<EditItemTemplate>
                <asp:DropDownList DataSource='<%# item() %>' DataTextField="itemname" DataValueField="itemname" OnSelectedIndexChanged="dlist_SelectedIndexChanged" AutoPostBack="true" ID="DropDownList1" runat="server"></asp:DropDownList>
                </EditItemTemplate>--%>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="mrp">
                <ItemTemplate>
                <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
                </ItemTemplate>
               <%-- <EditItemTemplate>
                <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
                </EditItemTemplate>--%>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="qty">
                <ItemTemplate>
                <asp:TextBox ID="TextBox1" runat="server" OnTextChanged="tb_TextChanged"  AutoPostBack="true"></asp:TextBox>
                </ItemTemplate>
                <%--<EditItemTemplate>
                <asp:TextBox ID="TextBox1" runat="server" OnTextChanged="tb_TextChanged"  AutoPostBack="true"></asp:TextBox>
                </EditItemTemplate>--%>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="tcost">
                <ItemTemplate>
                <asp:Label ID="Label2" runat="server" Text="Label"></asp:Label>
                </ItemTemplate>
                <%--<EditItemTemplate>
                <asp:Label ID="Label2" runat="server" Text="Label"></asp:Label>
                </EditItemTemplate>--%>
               </asp:TemplateField>
               <asp:TemplateField>
               <ItemTemplate>
               <asp:Button ID="btninsert" CommandName="Insert"  Text="InsertRow" runat="server" />
               </ItemTemplate>
               </asp:TemplateField>
         </Columns>
</asp:GridView>
    <asp:Button ID="btnaddrow" runat="server" onclick="Button2_Click" Text="add" />
<asp:Button ID="btinsert" runat="server" Text="insert" onclick="Button1_Click" />
    </form>
</body>
</html>




C#代码:




c# code:

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;

public partial class Default2 : System.Web.UI.Page
{
    SqlConnection cn = new SqlConnection("Data Source=SYS42;Initial Catalog=gc;Integrated Security=True");
    protected void Page_Load(object sender, EventArgs e)
    {
        if(!IsPostBack)
        ShowEmptyRow(grdv);
    }
    DataTable table = new DataTable();
    public void ShowEmptyRow(GridView grid)
    {
        if (grid.Rows.Count == 0)
        {
            //table = new DataTable();
            for (int i = 0; i < grid.Columns.Count; ++i)
            {

                if (grid.Columns[i] is BoundField)
                {

                    table.Columns.Add((grid.Columns[i] as BoundField).DataField);
                }
                else
                {
                    table.Columns.Add(grid.Columns[i].SortExpression);
                }
            }
            table.Rows.Add(table.NewRow());
           // grid.DataSourceID = String.Empty;
            grid.DataSource = table;
            grid.DataBind();
            if (String.IsNullOrEmpty(grid.EmptyDataText) == false)
            {
                grid.Rows[0].Cells[0].ColumnSpan = table.Columns.Count;
                grid.Rows[0].Cells[0].Text = grid.EmptyDataText;
                while (grid.Rows[0].Cells.Count > 1)
                {
                    grid.Rows[0].Cells.RemoveAt(1);
                }
            }
        }        
        
    }
    public DataSet item()
    {
        SqlDataAdapter da = new SqlDataAdapter("select itemname from items", cn);
        DataSet d = new DataSet();
        da.Fill(d);
        return d;
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        for (int j = 0; j < grdv.Rows.Count; j++)
        {
            DropDownList itemname = (grdv.Rows[j].Cells[1].Controls[0].FindControl("DropDownList1")) as DropDownList;
            TextBox qty = (grdv.Rows[j].Cells[3].Controls[0].FindControl("TextBox1")) as TextBox;
            //TextBox id = (grdv.Rows[j].Cells[1].Controls[0].FindControl("TextBox3")) as TextBox; ;
            int id = Convert.ToInt32(TextBox2.Text);
            Label tcost = (grdv.Rows[j].Cells[4].Controls[0].FindControl("Label2")) as Label;
            cn.Open();
            SqlCommand cm = new SqlCommand("insert into orders (orderid,itemname,quantity,tcost)values(''" + id+ "'',''" + itemname.SelectedItem.ToString() + "'',''" + qty.Text + "'',''" + tcost.Text + "'')", cn);
            cm.ExecuteNonQuery();
            cn.Close();
        }
    }
    protected void grdv_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (Page.IsPostBack)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                DropDownList dlist = e.Row.FindControl("DropDownList1") as DropDownList;
                if (dlist != null)
                {
                    dlist.SelectedIndexChanged += new EventHandler(dlist_SelectedIndexChanged);
                }
            }
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                TextBox tb = e.Row.FindControl("TextBox1") as TextBox;
                if (tb != null)
                {
                    tb.TextChanged += new EventHandler(tb_TextChanged);
                }
            }
            //if (e.Row.RowType == DataControlRowType.DataRow)
            //{
            //    Button btn = e.Row.FindControl("btninsert") as Button;
            //    btn.Click += new EventHandler(btn_Click);
            //}
        }
    }

    //public void btn_Click(object sender, EventArgs e)
    //{
    //    if (grdv.Rows.Count != 0)
    //    {
    //        if (table.Rows.Count != 0)
    //        {

    //            for (int i = 0; i < grdv.Columns.Count; ++i)
    //            {

    //                if (grdv.Columns[i] is BoundField)
    //                {

    //                    table.Columns.Add((grdv.Columns[i] as BoundField).DataField);
    //                }
    //                else
    //                {
    //                    table.Columns.Add(grdv.Columns[i].SortExpression);
    //                }
    //            }
    //            table.Rows.Add(table.NewRow());
    //            grdv.DataSourceID = String.Empty;
    //            grdv.DataSource = table;
    //            grdv.DataBind();
    //            if (String.IsNullOrEmpty(grdv.EmptyDataText) == false)
    //            {
    //                grdv.Rows[0].Cells[0].ColumnSpan = table.Columns.Count;
    //                grdv.Rows[0].Cells[0].Text = grdv.EmptyDataText;
    //                while (grdv.Rows[0].Cells.Count > 1)
    //                {
    //                    grdv.Rows[0].Cells.RemoveAt(1);
    //                }
    //            }
    //        }

    //    }
    //}
    public void tb_TextChanged(object sender, EventArgs e)
    {
        //throw new NotImplementedException();
        TextBox tbqty = (TextBox)sender;
        GridViewRow grdrDropDownRow = ((GridViewRow)tbqty.Parent.Parent);
        Label lblCurrentStatus = (Label)grdrDropDownRow.FindControl("Label1");
        Label tcost = (Label)grdrDropDownRow.FindControl("Label2");
        if (tbqty != null && lblCurrentStatus.Text != "")
        {
            int mrp = Convert.ToInt32(lblCurrentStatus.Text);
            int quant = Convert.ToInt32(tbqty.Text);
            float price = mrp * quant;
            tcost.Text = price.ToString();
        }
        else
        {
            int mrp = Convert.ToInt32(lblCurrentStatus.Text);
            int quant = Convert.ToInt32(tbqty.Text);
            float price = mrp * quant;
            tcost.Text = price.ToString();
        }
    }
    public void dlist_SelectedIndexChanged(object sender, EventArgs e)
    {
        //throw new NotImplementedException();
        for (int a = 0; a < grdv.Rows.Count; a++)
        {
            DropDownList dl = sender as DropDownList;
            GridViewRow row = dl.NamingContainer as GridViewRow;
            int i = row.RowIndex;
            DropDownList ddlCurrentDropDownList = (DropDownList)sender;
            GridViewRow grdrDropDownRow = ((GridViewRow)ddlCurrentDropDownList.Parent.Parent);
            Label lblCurrentStatus = (Label)grdrDropDownRow.FindControl("Label1");
            TextBox tbqty = (TextBox)grdrDropDownRow.FindControl("TextBox1");
            if (Page.IsPostBack)
            {
                tbqty.Text = string.Empty;
            }
            cn.Open();
            SqlCommand cmd = new SqlCommand("select cost from items where itemname=''" + ddlCurrentDropDownList.SelectedItem + "''", cn);
            int ss = Convert.ToInt32(cmd.ExecuteScalar());
            Label Label1 = (Label)grdv.Rows[i].Cells[2].FindControl("Label1");
            Label1.Text = ss.ToString();
            cn.Close();
        }
    }
    protected void grdv_SelectedIndexChanged(object sender, EventArgs e)
    {

    }
    protected void grdv_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        if (e.CommandName == "Insert")
        {
            if (grdv.Rows.Count != 0)
            {
                if (table.Rows.Count != 0)
                {

                    for (int i = 0; i < grdv.Columns.Count; ++i)
                    {

                        if (grdv.Columns[i] is BoundField)
                        {

                            table.Columns.Add((grdv.Columns[i] as BoundField).DataField);
                        }
                        else
                        {
                            table.Columns.Add(grdv.Columns[i].SortExpression);
                        }
                    }
                    table.Rows.Add(table.NewRow());
                    //grdv.DataSourceID = String.Empty;
                    grdv.DataSource = table;
                    grdv.DataBind();
                    if (String.IsNullOrEmpty(grdv.EmptyDataText) == false)
                    {
                        grdv.Rows[0].Cells[0].ColumnSpan = table.Columns.Count;
                        grdv.Rows[0].Cells[0].Text = grdv.EmptyDataText;
                        while (grdv.Rows[0].Cells.Count > 1)
                        {
                            grdv.Rows[0].Cells.RemoveAt(1);
                        }
                    }
                }

            }
        }
    }
    protected void Button2_Click(object sender, EventArgs e)
    {
           ShowEmptyRow(grdv);
    }
    // private void SetInitialRow()
    //{
    //    DataTable dt = new DataTable();
    //    DataRow dr = null;
    //     dt.Columns.Add(new DataColumn("SNO", typeof(TemplateField)));
    //    dt.Columns.Add(new DataColumn("item", typeof(TemplateField)));
    //    dt.Columns.Add(new DataColumn("mrp", typeof(TemplateField)));
    //    dt.Columns.Add(new DataColumn("qty", typeof(TemplateField)));
    //    dt.Columns.Add(new DataColumn("tcost", typeof(TemplateField)));
    //    dr = dt.NewRow();
    //    dr["RowNumber"] = 1;
    //    dr["SNO"]=<%#Container.DataItemIndex + 1 %>;
    //    dr["item"] =(DropDownList)grdv.DataSource=<%# item() %>;
    //    dr["mrp"] = (Label)grdv;
    //     dr["qty"]=(TextBox)grdv;
    //     dr["tcost"]=(Label)grdv;
    //    dt.Rows.Add(dr);
    //    //dr = dt.NewRow();
 
    //    //Store the DataTable in ViewState
    //    ViewState["CurrentTable"] = dt;
    //    }
 
}





please anyone guide me regarding this.

推荐答案

单击插入"按钮后,网格中的数据应保存在db thats all中.如果有人想查看该记录,则可以查看.在某些情况下,如果需要编辑,那么它应该是可编辑的.在整理收据(另一张收据)时,提及总订单号(来自tbl订单)应打印的订单编号.在这里,我要求建议在单击gridview中的addnewrow按钮后添加新行.新行也应该只看起来像第一行(我指的是所有控件).我不知道我是否正确提及了我的要求?但是我希望作为专家,您可以理解我的意思.因此,请指导我.
after clicking the insert button the data in grid should save in db thats all. If any one want to see that record they can view. In some situations , if editing needed then it should be editable. while priniting receipt(its another), by mentioning the orderid the total oreder(from order tbl) should print.here, I''m asking suggestion to add a new row after click on addnewrow button which is in gridview. the new row also should look like the first row only( i mean with all the controls).I don''t know whether I''ve mentioning my requirement properly or not? But I hope as an expert u may understand what I mean was. so please guide me regarding this.


我已经通过动态创建行并添加控件来达到要求.在查找控件字段中,我附加了现有控件.现在正在工作.
我在以下链接中找到了示例.

http://geekswithblogs.net/dotNETvinz/archive/2009/06/04/adding-dynamic-rows-in-gridview-with-textboxes.aspx.
I''ve achieved the requirement by creating the row dynamically and adding the controls. in find cntrol field I''ve attached the existing control. It''s working now.
I found the example at following link.

http://geekswithblogs.net/dotNETvinz/archive/2009/06/04/adding-dynamic-rows-in-gridview-with-textboxes.aspx.


这篇关于将新行添加到空网格,其中所有控件都在列中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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