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();
        }

效果:

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

时间: 2024-09-30 17:46:37

Table里嵌套ASPXGridView的相关文章

android之ScrollView里嵌套ListView(转)

hi,大家好,研究完ScrollView嵌套ScrollView之后,本人突然又想研究ScrollView里嵌套ListView了.如果还不知道ScrollView嵌套ScrollView是怎么实现的可以参考http://www.eoeandroid.com/thread-240709-1-1.html在上篇文章当中其实我没有怎么把原理讲清楚,只是上了原代码,而其实ScrollView里套ScrollView和ScrollView里套ListView是同一个道理的. 按常理,ScrollView

jsp页面:js方法里嵌套java代码(是操作数据库的),如果这个js 方法没被调用,当jsp页面被解析的时候,不管这个js方法有没有被调用这段java代码都会被执行?

jsp页面:js方法里嵌套java代码(是操作数据库的),如果这个js 方法没被调用,当jsp页面被解析的时候,不管这个js方法有没有被调用这段java代码都会被执行? 因为在解析时最新解析的就是JAVA代码,不管写哪里,都会最新被解析

element-ui 解决 table 里包含表单验证的问题!

实际项目中的场景,需要在table里做表单的验证,如图效果: 其实问题关键就在于如何给el-form-item动态绑定prop :prop="'tableData.' + scope.$index + '.字段名'" 详见代码: <template> <div v-bgb-block> <div style="margin-top:10px;"> <el-form :rules="model.rules"

解决在HTTPS页面里嵌套HTTP页面浏览器block的问题

问题描述: 浏览器默认是不允许在HTTPS里面引用HTTP页面的,ie下面会弹出提示框提示是否显示不安全的内容,一般都会弹出提示框,用户确认后才会继续加载,但是chrome下面直接被block掉,只在控制台打出信息. 在写网站的时候,自己的网站要嵌入别的网站,用iframe嵌入部分内容,当我把网站升级成https后,发现用iframe嵌http页面内容显示不出来,chrome控制台打出不安全的信息. 解决思路: 谷歌上不去不知道有没有更好的解决办法,反正百度里没找到.大致说下思路,https里嵌

Android之ScrollView里嵌套ListView

ScrollView套ListView会存以下两个问题 1.里面的listView高度无法算出来,通常只能显示listview的其中一行 2.listview不能滚动 这里我用的是可展开的(ExpandableListView 解决问题一,如果ExpandableListView是的子项是用写死的布局文件来加载的,只要在设置ListView的Adapter后调用此静态方法即可让ListView正确的显示在其父ListView的ListItem中.但是要注意的是,子ListView的每个Item必

表格里嵌套表格

例如 tabale的格式是<table></table>成对出现的,表格内部要有<tr></tr>表示一行,<tr></tr>内要有<td></td>表示一列,因为有个行,所以列确定了就定下来那个格子.例如<table><tr><td> </td><td> </td></tr></table>就是个一行两列的表格,如

django模板里循环变量&lt;table&gt;里想要两个一行如何控制

2016-8-3 周三 做项目时遇到的问题: 每个div由循环变量输出: {% for key,value in formextenddetail %} <div id="div_id_notes" class="value form-group row"> <div class="control-label">{{ key }}</div> <div class="controls"

table表格嵌套,边框重叠变粗

在外层table与内层table嵌套,内外表格都需边框时,设置"border=1",但边框会重复,造成某些地方边框粗,有些地方边框细 解决方法 1.外表格样式 <table border="1" cellspacing="0" cellpadding="0" style="border-collapse: collapse;"> 2.内表格样式 <table border="1&

Table里td中的文本过长,设置不换行,随内容同行显示(转载)

当td中内容过长时,内容会溢出,换行显示,美观超级差,在td里设置这个属性 "white-space:nowrap   就可以解决排版问题啦 <td style="white-space:nowrap">非法闯入闯出亮灯处理:</td> 不美观的样式: 美观的样式: 另外,nowrap属性可以用在很多标签里面哦,美化排版效果.