• Table里嵌套ASPXGridView


    Table里嵌套ASPXGridView

    简述

    有时候我们在录入数据的时候,因为录入数据字段比较少,所以可以直接在GridView上录入。

    但是我们有些公用字段是在单头中固定的,GridView显示的是单身。

    这样为了方便我们把GridView嵌套在Table中,录入数据时就可以取到单头上的数据。

    也可以根据单头来检索同类数据,编辑数据也可在GridView上操作。

    ASPXGridView

    这边在GridView是选择了DevExpress控件里的ASPXGridView。

    这个第三方控件是美国人做的,现在应该更新到14.几了吧。

    国内也有公司在代理,但是是收费的,网上也可以下载到,再自己破解下就可以用了。

    Dev在GridView(表格)和PivotGrid(报表)上提供了很大集成功能,用起来很简单方便。

    但是因为控件的英文的开发起来有一定难度,但是他有一个很完善的Demo可以学习。

    前台ASPX

    我们在页面上话一个2行6列的Table,然后把第2行的合并单元格。第一行里放表头字段及数据,第二行里放ASPXGridView。

    代码如下:

    <table runat="server" border="2">
                <tr>
                    <td>订单单号:</td>
                    <td><asp:TextBox runat="server" ID="txtTA027" AutoPostBack="true" OnTextChanged="txtTA027_TextChanged"></asp:TextBox></td>
                    <td>工单单号:</td>
                    <td><asp:TextBox runat="server" ID="txtTA002" AutoPostBack="true"></asp:TextBox></td>
                    <td>品号:</td>
                    <td><asp:TextBox runat="server" ID="txtTA006" AutoPostBack="true" OnTextChanged="txtTA006_TextChanged"></asp:TextBox></td>
                </tr>
                
                <tr>
                    <td colspan="6">
                        <dx:ASPxGridView ID="ASPxGridView1" runat="server" KeyFieldName="TA002" Width="100%" OnRowUpdating="ASPxGridView1_RowUpdating" OnRowInserting="ASPxGridView1_RowInserting" OnInitNewRow="ASPxGridView1_InitNewRow" OnPageIndexChanged="ASPxGridView1_PageIndexChanged">
                            <Settings ShowGroupPanel="True" />
                            <SettingsEditing Mode="Inline" />
                            <Columns>
                                 <dx:GridViewCommandColumn VisibleIndex="0">
                                    <EditButton Visible="True">
                                    </EditButton>
                                     <NewButton Visible="true" />
                                 </dx:GridViewCommandColumn>
                                <dx:GridViewDataColumn FieldName="TA002" Caption="工单单号" VisibleIndex="1" ReadOnly="false">
                                    <Settings AllowSort="True" />
                                    <HeaderStyle HorizontalAlign="Center" Font-Bold ="true"  ForeColor ="white"/> 
                                    <CellStyle BackColor="#E8F4FF" HorizontalAlign="Center"></CellStyle>
                                 </dx:GridViewDataColumn>
                                 <dx:GridViewDataColumn FieldName="CL" Caption="产量" VisibleIndex="2">
                                    <Settings AllowSort="True" />
                                    <HeaderStyle HorizontalAlign="Center" Font-Bold ="true"  ForeColor ="white"/> 
                                    <CellStyle BackColor="#E8F4FF" HorizontalAlign="Center"></CellStyle>
                                 </dx:GridViewDataColumn>
                                <dx:GridViewDataColumn FieldName="RJZH" Caption="软件组合" VisibleIndex="3">
                                    <Settings AllowSort="True" />
                                    <HeaderStyle HorizontalAlign="Center" Font-Bold ="true"  ForeColor ="white"/> 
                                    <CellStyle BackColor="#E8F4FF" HorizontalAlign="Center"></CellStyle>
                                 </dx:GridViewDataColumn>
                                <dx:GridViewDataColumn FieldName="CLZH" Caption="磁路组合" VisibleIndex="4">
                                    <Settings AllowSort="True" />
                                    <HeaderStyle HorizontalAlign="Center" Font-Bold ="true"  ForeColor ="white"/> 
                                    <CellStyle BackColor="#E8F4FF" HorizontalAlign="Center"></CellStyle>
                                 </dx:GridViewDataColumn>
                            </Columns>
                        </dx:ASPxGridView>
                    </td>
                </tr>
            </table>

    注意点:

    画Table时要注意设置runat属性为server。

    TextBox里设置属性AutoPostBack为True,这样我们在TextBox修改时就会执行OnTextChanged事件,实现数据检索效果。

    ASPXGridView里要设置KeyFieldName(主键)属性。

    数据录入事件写在OnRowInserting事件中,数据编辑在OnRowUpdating事件中。

    后台Cs:

    static string constr = @"Data Source=.;Initial Catalog=MT;Integrated Security=True";
            SqlConnection conn = new SqlConnection(constr);
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!Page.IsPostBack)
                {
                    GBinding();
                }
            }
            private void GBinding()
            {
                string TA027 = "";
                string TA006 = "";
                string TA002 = "";
                string sql = "";
                if (txtTA027.Text.Trim() != "")
                {
                    TA027 = string.Format("and TA027='{0}' ", txtTA027.Text.Trim());
                }
                else
                {
                    TA027 = "";
                }
                if (txtTA006.Text.Trim() != "")
                {
                    TA006 = string.Format("and Address='{0}' ", txtTA006.Text.Trim());
                }
                else
                {
                    TA006 = "";
                }
                sql += "select * from [Product_Plan] ";
                sql += "where 1=1 ";
                sql += TA006+TA027;
                conn.Open();
                DataSet ds = new DataSet();
                SqlDataAdapter sda = new SqlDataAdapter(sql, conn);
                sda.Fill(ds, "Tb1");
                DataTable dt = ds.Tables["Tb1"];
                ASPxGridView1.DataSource = dt;
                ASPxGridView1.DataBind();
                conn.Close();
            }
    
            protected void ASPxGridView1_RowUpdating(object sender, DevExpress.Web.Data.ASPxDataUpdatingEventArgs e)
            {
                string key = Convert.ToString(e.Keys[0]).Trim();
                string cl = "";
                string rjzh = "";
                string clzh = "";
                if (e.NewValues["CLZH"] != null)
                {
                    clzh = e.NewValues["CLZH"].ToString();
                }
                if (e.NewValues["RJZH"] != null)
                {
                    rjzh = e.NewValues["RJZH"].ToString();
                }
                if (e.NewValues["CL"] != null)
                {
                    cl = e.NewValues["CL"].ToString();
                }
                string sql = "";
                sql = string.Format("UPDATE [Product_Plan] SET [CLZH]='{0}',[RJZH]='{1}',[CL]='{2}' WHERE TA002='{3}'", clzh, rjzh, cl, key);
                conn.Open();
                SqlCommand cmd = new SqlCommand(sql, conn);
                cmd.ExecuteNonQuery();
                conn.Close();
                this.ASPxGridView1.CancelEdit();
                e.Cancel = true;
                GBinding();
            }
    
            protected void ASPxGridView1_RowInserting(object sender, DevExpress.Web.Data.ASPxDataInsertingEventArgs e)
            {
                string ta002 = "";
                string cl = "";
                string rjzh = "";
                string clzh = "";
                string ta027 = "";
                string ta006 = "";
                if (txtTA027.Text != null)
                {
                    ta027 = txtTA027.Text.Trim();
                }
                if (txtTA006.Text != null)
                {
                    ta006 = txtTA006.Text.Trim();
                }
                if (e.NewValues["TA002"] != null)
                {
                    ta002 = e.NewValues["TA002"].ToString();
                }
                if (e.NewValues["CLZH"] != null)
                {
                    clzh = e.NewValues["CLZH"].ToString();
                }
                if (e.NewValues["RJZH"] != null)
                {
                    rjzh = e.NewValues["RJZH"].ToString();
                }
                if (e.NewValues["CL"] != null)
                {
                    cl = e.NewValues["CL"].ToString();
                }
                string sql = "";
                sql = string.Format("INSERT INTO [Product_Plan] (TA002,TA027,TA006,CLZH,RJZH,CL) VALUES('{0}','{1}','{2}','{3}','{4}','{5}')",ta002,ta027,ta006,clzh,rjzh,cl);
                conn.Open();
                SqlCommand cmd = new SqlCommand(sql, conn);
                cmd.ExecuteNonQuery();
                conn.Close();
                this.ASPxGridView1.CancelEdit();
                e.Cancel = true;
                GBinding();
            }
    
            protected void ASPxGridView1_InitNewRow(object sender, DevExpress.Web.Data.ASPxDataInitNewRowEventArgs e)
            {
                e.NewValues["TA002"] = txtTA002.Text.Trim();
            }
    
            protected void txtTA027_TextChanged(object sender, EventArgs e)
            {
                GBinding();
            }
    
            protected void ASPxGridView1_PageIndexChanged(object sender, EventArgs e)
            {
                GBinding();
            }
    
            protected void txtTA006_TextChanged(object sender, EventArgs e)
            {
                GBinding();
            }

    效果:

    这样就基本实现上述功能。

  • 相关阅读:
    字典与集合
    gitee
    在使用pycharm时同时缩进、左移、多行注释
    代码1(while循环和IF条件语句,字符格式化,break,continue)
    python基础-工具
    11 Serializer组件
    10 响应模块
    09 异常模块
    08 解析模块
    07 渲染模块
  • 原文地址:https://www.cnblogs.com/zhwdbky/p/4224256.html
Copyright © 2020-2023  润新知